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 条评论
登录 后参与评论

相关文章

来自专栏逍遥剑客的游戏开发

一个困扰我一个多星期的Nebula3的BUG

1143
来自专栏张戈的专栏

仿异次元百度分享工具条张戈修改版

只要不是高度近视,就会发现张戈博客的文章最近加上了这个仿异次元百度分享工具条。增加这个跟随横条的初衷,其实是最近启用百度两侧漂浮广告后,发现博客左侧的分享条以及...

4298
来自专栏JadePeng的技术博客

Html 5 video/audio 格式转换 ogg

Html5 开始支持video和audio标签,但是各个浏览器支持的格式不一样,见下图 Codec support in modern desktop brow...

41010
来自专栏游戏开发那些事

【UE4游戏开发】安装UE4时报SU-PQR1603错误的解决方法

  马三在开发过程中一直用的都是UE4.9版本(很久没有更新了。),因为功能都够用,所以也懒得去更新。这不最近UE4 发布了最新的4.14版本,本来想尝个鲜,试...

723
来自专栏技术博客

使用Spire.Office for .NET(Word、Excel、PPT、PDF等)的初步感受

  本文大部分内容来自http://www.codeproject.com/Articles/710747/First-thoughts-on-Spire-Do...

1633
来自专栏腾讯云serverless的专栏

使用腾讯云 SCF 云函数压缩 COS 对象存储文件

如何处理 COS 对象存储中的大量文件打包需求?或许 SCF 无服务器云函数能助你一臂之力!

1.3K2
来自专栏抠抠空间

网络编程

阅读目录 一.楔子 二.客户端/服务端架构 三.网络基础 四.套接字(socket)初使用 五.黏包 六.验证客户端链接的合法性 七.socketserver ...

2786
来自专栏转载gongluck的CSDN博客

SAPI SDK的介绍

我们都使用过一些某某词霸的英语学习工具软件,它们大多都有朗读的功能,其实这就是利用的Windows的TTS(Text To Speech)语音引擎。它包含在Wi...

3477
来自专栏FreeBuf

CVE-2017-8759完美复现(另附加hta+powershell弹框闪烁解决方案)

CVE-2017-8759 是前几天出的 0 DAY ,搜了下,国内几乎没有人复现,这个洞总体来说,危害很大,而且比CVE-2017-0199 更难防御。 漏...

24610
来自专栏FreeBuf

无文件Powershell恶意程序使用DNS作为隐蔽信道

思科Talos安全团队最近发现一款Powershell恶意程序,用DNS进行双向通信。 前言 DNS是企业网络中最常用的Internet应用层协议。DNS提供域...

1859

扫码关注云+社区