Python3实现ICMP远控后门(上)

ICMP后门

前言

这几天一直在研究远控木马的一些通信协议,比如TCP,UDP,ICMP,DNS,HTTP等等,对于TCP,UDP这两种就不讲解了,因为太常见了。

大家可能对采用ICMP,DNS的木马不是很熟悉,其实这两种协议在木马通信上很流行,特点是比较隐蔽,不容易被封锁。HTTP协议主要是用在以大型网站作为C&C服务器的场景,例如之前就有使用twitter作为 C&C服务器。

本次就以ICMP协议进行分析,并使用Python开发出一个ICMP远控后门,在写这篇文章的之前,我感觉大家对ICMP协议肯定不会很了解,因此将ICMP后门的实现分成几篇进行讲解,循序渐进。本篇就讲解一下ICMP协议的内容,并使用Python实现一个简单的ping。

第一节

ICMP协议是什么鬼?

不知道大家有没有ping过百度,用来测试自己的网络是不是畅通,如下图所示。

ping命令使用的就是ICMP协议,在ping百度的过程中,咱们使用wireshark抓一下包,这样比较直观。如下图所示,ICMP协议是典型的一问一答模式,本机向百度服务器发送ICMP请求包,如果请求包成功到达目的地,百度服务器则回应ICMP响应包。

第二节

ICMP协议及报文格式

ICMP(Internet Control Message Protocol)是IPv4协议族中的一个子协议,用于IP主机、路由器之间传递控制消息。控制消息是在网络通不通、主机是否可达、路由是否可用等网络本身的消息。ICMP报文以IP协议为基础,其报文格式如下:

如上图所示,ICMP协议在实际传输中数据包:20字节IP首部 + 8字节ICMP首部+ 1472字节<数据大小>38字节。对于ICMP首部细分为8位类型+8位代码+16位校验和+16位标识符+16位序列号,其中类型的取值如下,我们比较关注的是请求(取值为8)和应答(取值为0)。

第三节

ping实现

在上面我们简单讲解了ICMP的报文格式,接下来我们使用Python3根据报文格式简单实现一下ping功能,主要用到了raw socket技术,即原始套接字,使用struct pack方法打包ICMP报文。代码实现如下所示:

原始套接字的初始化,使用如下代码:

socket.socket(socket.AF_INET,socket.SOCK_RAW, socket.getprotobyname('icmp'))

里面比较复杂的是计算校验和,计算方法如下:

  1. ICMP首部和数据整个内容看成16比特整数序列(按网络字节顺序),
  2. 对每个整数分别计算其二进制反码,然后相加
  3. 再对结果计算一次二进制反码而求得

测试ping效果

注意使用管理员权限运行Python脚本,直接ping 百度的地址 220.181.112.244

同时打开wireshark抓包。

原文发布于微信公众号 - 七夜安全博客(qiye_safe)

原文发表时间:2018-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JetpropelledSnake

Python Web学习笔记之TCP/IP协议原理与介绍

HTTP、FTP、SMTP、Telnet等等协议,哦!那个HTTP协议啊就是访问网页用的那个协议啊然后那个······其实······你懂得,我们应该从实际来了...

659100
来自专栏蓝天

Linux上的TIME_WAIT和tcp_fin_timeout

当Linux服务器的TIME_WAIT过多时, 通常会想到去修改参数降低TIME_WAIT时长, 以减少TIME_WAIT数量,但Linux并没有提供这样...

21940
来自专栏解Bug之路

TCP协议详解-定时器

        如代码所示,如果tcp的state<ESTABLISHED,表明其处于连接建立状态。定时器超时后,调用dropit终止连接。大多数伯克利系统将建...

8920
来自专栏听雨堂

连续打印问题的解决

主要是纸张的高度无法控制! 情况如下:     打印一个窄行的自定义单据,通过设置自定义纸张,可以控制打印机每次严格按照自定义的大小进行打印只打单张的情况下,没...

23290
来自专栏程序员互动联盟

TCP/IP关键协议记忆小卡片

在互联网中实际使用的是TCP/IP参考模型。实际存在的协议主要包括在:物理层、数据链路层、网络层、传输层和应用层。 应用层   ·DHCP(动态主机分配协议) ...

36590
来自专栏土豆专栏

计算机网络基础知识整理--数据链路层

小编最近在复习计算机网络基础,整理出来一些我认为比较重要的知识。希望能帮到大家哈,后续会更新~

827120
来自专栏网络

TCP/IP四层模型讲解笔记整理通俗易懂版

OSI七层模型和TCP/IP四层模型,以前总觉得这些纯理论层面的东西对实战没有什么意义,现在回头看看还是非常有意义的,不过放在当时我也懒得学这么枯燥的东西。 接...

281100
来自专栏java初学

TCP/IP三次握手与四次挥手

30170
来自专栏mathor

计算机网络基础知识总结

 为了使不同计算机厂家生产的计算机能相互通信,在更大范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/R...

1K20
来自专栏零基础使用Django2.0.1打造在线教育网站

TCP/IP 七层网络模型 三次握手

TCP/IP(TransmissionControlProtocol/Internet Protocol),中文名为传输控制协议/因特网互联协议,又名网络通讯协...

23410

扫码关注云+社区

领取腾讯云代金券