专栏首页七夜安全博客Python3实现ICMP远控后门(上)

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),作者:七夜

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python3实现ICMP远控后门(中)之“嗅探”黑科技

    七夜安全博客
  • 后门编程(1)之双管道主动连接型

    七夜安全博客
  • 教你学木马攻防 | 隧道木马 | ICMP反弹shell

    在上一篇文章中,我们讲解了木马中常用的端口转发技术,这一节讲解一下木马通信协议中的ICMP协议,并通过ICMP实现一个反弹shell。

    七夜安全博客
  • 【RL-TCPnet网络教程】第24章 RL-TCPnet之网络控制报文协议ICMP

    本章节为大家讲解ICMP(Internet Control Message Protocol,网络控制报文协议),通过前面章节对TCP和UDP的学习,需要大家对...

    armfly
  • 浅谈ICMP Flood攻击原理。

    我们经常听到常规主流的DDOS攻击、CC攻击,SYN Flood攻击,HTTPS攻击等,刚好有客户问ICMP Flood攻击是什么?那我们今天就谈谈ICMP F...

    墨者盾
  • 学界 | 从文本挖掘综述分类、聚类和信息提取等算法

    选自arXiv 机器之心编译 参与:机器之心编辑部 文本挖掘一直是十分重要的信息处理领域,因为不论是推荐系统、搜索系统还是其它广泛性应用,我们都需要借助文本挖掘...

    机器之心
  • 针对toad的schema brower和plsql developer的对象浏览器的一些分析

    以前做JAVA开发时,一直用的都是plsql developer,搜索对象(表、触发器、DB_LINKS、同义词、序列)都是使用的对象浏览器:

    williamwong
  • 连仕彤博客Mysql数据库归档利器之pt-archiver

    行 者
  • 从锅炉工到AI专家(8)

    俺踏月色而来
  • 如何评价Google最新发布的增强型风格迁移算法?

    Google最新发布了一种新的迁移网络(来自其论文《A Learned Representation for Artistic Style》)同时学习多种风格的...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券