1. 程式人生 > >Dionaea蜜罐IP數據地圖可視化

Dionaea蜜罐IP數據地圖可視化

pmap git numpy file py3 tree 所有 open 結果

#關於如何簡單搭建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數據地圖可視化