"Simple program to extract information from Dionaea's sqlite3 logfile". It is required to input the sqllog.sqlite while creating a new object with this class.
In order to save place on me blog i pasted the source code on pastie.org. This way i will keep this blog looking like an actual blog.
require 'sqlite3'
# Reads Dionaea sqlite3 log file
# Queries are stolen from http://carnivore.it/2009/11/06
module MyTools
class Dionaea
def initialize(log)
@log = log
end
# BAM!
def execute_query(sql_query)
db = SQLite3::Database.new(@log)
db.execute(sql_query)
end
# Sort by most downloaded files
def most_downloaded
query = %q{
SELECT
COUNT(download_md5_hash),
download_md5_hash,
download_url
FROM
downloads
GROUP BY
download_md5_hash
ORDER BY
COUNT(download_md5_hash)
DESC
}
execute_query(query)
end
# Sort by "most used download location"
def most_used_dl
query = %q{
SELECT
COUNT(*),
download_url
FROM
downloads
GROUP BY
download_url
ORDER BY
COUNT(*)
DESC;
}
execute_query(query)
end
# Sort by most aggressive attackers
def aggressive_attackers
query = %q{
SELECT
count(*),
download_md5_hash,
remote_host,
download_url
FROM
connections
NATURAL JOIN
downloads
GROUP BY
download_md5_hash,remote_host
ORDER BY
COUNT(*)
DESC
}
execute_query(query)
end
# Shows last 24 hours activity
def last_24hours
query = %q{
SELECT
ROUND((connection_timestamp%(3600*24))/3600) AS hour,
count(*)
FROM
connections
WHERE
connection_parent IS NULL
GROUP BY
ROUND((connection_timestamp%(3600*24))/3600);
}
execute_query(query)
end
# Sort by md5s retrieved
def get_md5s
query = %q{
SELECT
download_md5_hash,
download_url,
remote_host
FROM
connections
NATURAL JOIN
downloads
GROUP BY
download_md5_hash,remote_host
ORDER BY
download_url
DESC
}
md5s = []
execute_query(query).each do |result|
md5s << result.slice(0)
end
return md5s
end
# Sort by MD5, download url and attackers IP
def get_jiggy_with_it
query = %q{
SELECT
count(*),
download_md5_hash,
download_url,
remote_host
FROM
connections
NATURAL JOIN
downloads
GROUP BY
download_md5_hash,remote_host
ORDER BY
download_url
DESC
}
execute_query(query)
end
end
end