Dionaea蜜罐IP数据地图可视化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dionaea蜜罐IP数据地图可视化相关的知识,希望对你有一定的参考价值。

 

#关于如何简单搭建Dionaea低交互式蜜罐,详见博文

#前言.

  以我在洛杉矶租用某台VPS上搭建的Dionaea蜜罐,在5.26晚23.58至5.28日17.10时间段(41h)捕获到的所有扫描和攻击数据为例:

  开放脆弱服务、端口:

技术分享

 1 Blackhole  -123
 2 Memcache   -11211
 3 SipSession  -5060
 4 epmapper     -135
 5 httpd        -80
 6 mongod       -27017
 7 mqttd        -1883
 8 mssqld       -1433
 9 mysqld       -3306
10 pptpd        -1723
11 smbd         -445
12 upnpd        -1900

  期间,共计事件2130起。 

1.剪裁数据

tree -a /opt/dionaea/var/dionaea/bistream > attack.txt #tree命令导出所有数据流记录

  生成的attack.txt文件手工去除几个日期行,剪裁至形式(ps.notepad++编辑器,Alt+鼠标选择整行):

Blackhole-123-101.100.146.*-DldOYS

  使用脚本split_to_ipaddr.py。为保证同一ip频数,结果未去重:

 1 #Used To Split Logging File To IpAddress File.
 2 #Just Run: ./split_to_ipaddr.py Or python split_to_ipaddr.py.
 3 #Blog: http://www.cnblogs.com/khani0cc/
 4 
 5 def split_to_ipaddr():
 6     iF = open(attack.txt,r)
 7     oF = open(ipaddr.txt,w)
 8     lines = iF.readlines()
 9     for line in lines:
10         ipaddr = line.split(-)[2]
11         print ipaddr
12         oF.writelines(ipaddr)
13         oF.writelines(\\n)
14     iF.close()
15     oF.close()
16 
17 def main():
18     try:
19         split_to_ipaddr()
20         print "Attack File Split Successful!"
21         exit(0)
22     except Exception, e:
23         print e
24         exit(0)
25 
26 if __name__ == __main__:
27     main()

  执行后生成仅包含逐行ip地址的文件ipaddr.txt。

 

2.生成ip地址地图分布

  PyGeoIpMap

  Requirement:Python3,numpy,matplotlib,Basemap,pygeoip

  a.关于Windows上WinPython-32bit-3.5.3安装basemap:

     pyproj?1.9.5.1?cp35?cp35m?win32.whl

     basemap?1.1.0?cp35?cp35m?win32.whl

  b.Windows CMD输出默认不支持UTF-8编码,对于诸如 "region_name":"Ã?le-de-France" 字符会报错

  因此需要先改变CMD编码

chcp 65001

  然后执行脚本pygeoipmap.py
技术分享

  脚本开始向https://freegeoip.net发送ip地理位置请求,返回

{"ip":"195.154.51.23","country_code":"FR","country_name":"France","region_code":"IDF",
"region_name":"Ã?le-de-France",
"city":"La Norville","zip_code":"91290","time_zone":"Europe/Paris","latitude":48.5824,
"longitude":2.2618,"metro_code":0}

  并以

print("{ip}, {region_name}, {country_name}, {latitude}, {longitude}"

  的形式逐条输出ip地址对应地区、国家和经纬度信息。

  运行完毕会调用matplotlib自动生成一张output.png图片

技术分享

   愈鲜红的点说明该ip连接蜜罐次数越多。

 

3.后言

  Py3的basemap模块在linux和Win下都很难安装,而通过WinPython3+lfd的非官方whl能顺利完成。

 参考链接: 

  • PyGeoIpMap:https://github.com/pierrrrrrre/PyGeoIpMap
  • Unicode characters in Windows command line - how?:

  https://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how/388500#388500

以上是关于Dionaea蜜罐IP数据地图可视化的主要内容,如果未能解决你的问题,请参考以下文章

Mysql蜜罐

Mysql蜜罐

犯罪分子利用易受攻击 Docker 镜像的速度有多快?

lnmp+ELK+Nginx+GeoIP超详细新版ELK8.5.0解析收集Nginx日志并实现数据可视化与IP地址地图可视化教程-2022年11月版

Elasticsearch基于 Elasticsearch + kibana 实现 IP 地址分布地图可视化

python3--数据可视化-破解IP查询接口 将6万个IP地址可视化展示(附源码)