文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Something about Pyth

2023-01-31 01:14

关注
  1.  In these series of posts we will see how to build some necessary tools from scratch to perform our tasks. Today we focus our attention on network, we are going to build a sniffer and a relative simple parser. Why don’t I use the well-known tcpdump? Wireshark? Tshark? First of all it’s more satisfactory to code your own tool, second it’s a good practice to develop a problem solving attitude and improve our knowledge, and finally it’s so cool to code in Python! ;) 
  2.  
  3. The holy Python helps us, some smart guys of the famous security agency Core Security have coded two modulesPcapy and Impacket. The first one is an interface with the well known libpcap packet capture library, while the second one is a power module to craft and decode packets. 
  4.  
  5. In this post we will see some parts of two scripts, the first yas.py will sniff and save the traffic in a .pcap file, the second, pcapino.py will parse the previous file looking for UDP and TCP connections, in particular the script will show us the following information: the type of layer 4 used (TCP or UDP), the source ip and source port, the destination ip and the destination port, the sequential number, the window size and GET request if they are present. We need this information in order to figure out what a program, maybe potentially dangerous does, in this  demonstrative scripts I’ll pay attention on GET request and DNS activity ( most common activities to droppers and/or dnschangers :) ). 
  6.  
  7. The first thing to do is to code the sniffer that dumps all traffic in a .pcap file, let’s see some snippets: 
  8.  
  9. # Yet Another Sniffer - 5D4A LAB - emdel 
  10. # Contact: "echo "emfuckspammer87@gmail.com" | sed s/fuckspammer/del/ " 
  11. # To stop it use ctrl-c ^_* Have fun! 
  12.  
  13. import pcapy, sys 
  14. from pcapy import findalldevs, open_live 
  15. from impacket.ImpactDecoder import EthDecoder 
  16.  
  17. Here we observe clearly the necessary import, in particular pcapy and impacket. 
  18. Now let’s see the part that realizes the dump: 
  19.  
  20. class Handling: 
  21.  
  22.     def __init__( self, pcapObj, decoder, dmp ): 
  23.         self.d = pcapObj 
  24.         self.dec = decoder 
  25.         self.dumper = dmp 
  26.  
  27.     def PktHandler( self, hdr, data ): 
  28.         self.dumper.dump( hdr, data ) 
  29.  
  30. Here we notice how, once we have sniffed the packet, how to dump it on the .pcap file. 
  31. Now we must code our parser focusing on tcp and udp, let’s observe the some snippets from the parser: 
  32.  
  33. # pcapino - 5D4A LAB - emdel 
  34. # Description: It is a simple pcap file parser 
  35. # Author: emdel - 5D4A LAB - "echo "emfuckspammer87@gmail.com" | sed s/fuckspammer/del/ " 
  36. # TODO: - Follow TCP sessions - Parse L7 - More support to L2 
  37. # Have fun! 
  38.  
  39. import pcapy, sys, string 
  40. from pcapy import open_offline 
  41. from impacket.ImpactDecoder import EthDecoder 
  42.  
  43. Again the same import except for open_offline, logically we open the file .pcap and so we are not in an online scenario :) 
  44.  
  45. class Handling: 
  46.  
  47.     def __init__( self, pcapObj, decoder ): 
  48.         self.d = pcapObj 
  49.         self.dec = decoder 
  50.  
  51.     def PktHandler( self, hdr, data ): 
  52.  
  53.         pkt = self.dec.decode( data ) 
  54.         ip = pkt.child( ) 
  55.  
  56.         if ip.get_ip_p( ) == 17: 
  57.             udp = ip.child( ) 
  58.             print "| %s\t| %s:%d \t| %s:%d \t| %c\t\t |\t%c\t | %s" % ( "UDP", ip.get_ip_src(), udp.get_uh_sport( ), ip.get_ip_dst(),udp.get_uh_dport( ), "/", "/", "/" ) 
  59. .... 
  60.  
  61. Here we see how we handle an UDP packet and how we can print it on the stdout, first we check the protocol field on the IP header to see if it is TCP or UDP and then we manage it properly. 
  62. Now it’s time to launch these scripts and check if they run properly ;) : 
  63.  
  64. [root@zangetsu lab (22:56)]# python yas.py post.pcap 
  65.  
  66. ** Yet Another Sniffer - 5D4A LAB ** 
  67.  
  68. :: Interfaces: 
  69.  |__ eth0 
  70.  |__ bluetooth0 
  71.  |__ lo 
  72. :: Datalink: DLT_EN10MB 
  73. :: Sniffing on eth0 - network: xxx.xxx.xxx.0 - mask: 255.255.255.0 
  74.  
  75. :: Packets: 
  76.  
  77. Exiting... 
  78.  
  79. Let’s see what we have sniffed: 
  80.  
  81. ** pcapino - 5D4A LAB ** 
  82.  
  83. :: Pcap filter: tcp or udp 
  84. :: Parsing post.pcap 
  85. :: Traffic sniffed on DLT_EN10MB 
  86.  
  87. :: Parsing... 
  88.  
  89. ------------------------------------------------------------------------------------------------------------------------------------ 
  90. | TYPE  |       FROM            |       TO              |       SEQ      |      WIN      |      GET 
  91. ------------------------------------------------------------------------------------------------------------------------------------ 
  92. | TCP   | xxx.xxx.xxx.xxx:45235   | 64.4.34.150:1863      | 3771785275     |      1002     | 
  93. | TCP   | xxx.xxx.xxx.xxx:45235   | 64.4.34.150:1863      | 3771785280     |      1002     | 
  94. | UDP   | xxx.xxx.xxx.xxx:53401   | 208.67.222.222:53     | /              |      /        | / 
  95. | UDP   | xxx.xxx.xxx.xxx.:53401   | 208.67.222.222:53     | /              |      /       | / 
  96. | UDP   | 208.67.222.222:53     | xxx.xxx.xxx.xxx:53401   | /              |      /        | / 
  97. | TCP   | xxx.xxx.xxx.xxx:56529   | 200.123.107.174:80    | 2985889925     |      92       | 
  98. | TCP   | xxx.xxx.xxx.xxx:56529   | 200.123.107.174:80    | 2985889925     |      92       | GET /project/impacket.html HTTP/1.1 
  99. | TCP   | 200.123.107.174:80    | xxx.xxx.xxx.xxx:56529   | 3980002124     |      17160    | 
  100. | TCP   | xxx.xxx.xxx.xxx:56529   | 200.123.107.174:80    | 2985890508     |      108      | 
  101. | TCP   | xxx.xxx.xxx.xxx:56529   | 200.123.107.174:80    | 2985890508     |      108      | GET /p_w_picpaths/style.css HTTP/1.1 
  102.  
  103. ............... 
  104.  
  105. As we can see we obtain what we have designed, I’m sorry for this poor layout but this is what wordpress.com offers me, and we have a better idea of what is the activity in our network or in an analysis scenario and maybe we understand what the program tries to do. These two scripts can be easily modified to perform other interesting tasks, e.g see the comments at the beginning of pcapino, we could follow the tcp streams, parse in a better way the protocols at layer 7 of ISO/OSI model, in particular to a hypothetical malware analysis HTTP and IRC, or monitor a worm in its efforts to infect other hosts. 
  106.  
  107. Happy hacking 
  108.  
  109. Regards, 

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯