HAForensics打靶记录

主机探测

ip为192.168.6.222 端口扫描

目录遍历

1
gobuster dir --wordlist=/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.6.222 -x txt,php,html,sql,zip,rar | tee report/dirscan_rootpath_full.txt
  • -u 选项用于指定目标 URL
  • -x 选项用于指定要包括在枚举中的文件扩展名,以逗号分隔的一系列扩展名。
  • tee 命令将输出内容同时显示在控制台,并保存到指定文件。

图片信息提取

下载之后依次查看图片信息,发现flag1

分析gif文件,发现MySQL MISAM文件,尝试分离出来

[!note] MyISAM是MySQL默认存储引擎之一,用于管理数据表的存储和检索 通常一个MyISAM表包括三个文件:

  • .frm 文件:表结构定义
  • .MYD 文件:存储实际数据
  • .MYI 文件:索引信息

此处只有一个MYI文件,无法分析出有效信息

PGP解密

下载flag.zip文件之后,尝试解压,发现需要密码,遂继续寻找解压密码的信息

clue.txt 发现有PGP私钥和加密消息

[!note] PGP 是一种数据加密和解密程序,提供加密通信和数据文件签名。

  • 安装 sudo apt-get install gnupg
  • 导入私钥 gpg --import private.key
  • 使用导入的私钥解密消息 gpg --decrypt message.pgp

在本地尝试用gnupg来解密消息,但提示需要私钥的加密密码,遂放弃

之后借助在线网站也提示需要私钥加密密码,看网上wp说密码为空,此处我尝试失败,借助网上wp的图来展示加密的消息内容,是说密码的组成是for***,后三位是数字

crunch 6 6 -t for%%% > password.dict

  • crunch 是一个用于生成密码字典的命令行工具
  • 特殊字符:
    • % 代表数字
    • ^ 代表特殊符号
    • @ 代表小写字符
    • , 代表大写字符

爆破压缩文件密码

方法一:使用fcrackzip

fcrackzip 是一个用于破解压缩文件(例如zip格式)密码的工具。它支持暴力破解和字典攻击两种模式。

1
fcrackzip -u -D -p password.dict flag.zip
  • -u:尝试解压文件以验证密码是否正确。
  • -D:使用字典攻击模式。
  • -p dict.txt:指定字典文件 dict.txt,其中包含可能的密码列表。
  • flag.zip:目标 ZIP 文件。

方法二:使用john

John the Ripper 是一个强大的密码破解工具,支持多种加密格式。它也可以用于破解ZIP文件的密码。

1、首先提取zip文件hash zip2john file.zip > zip_hash.txt 2、使用 john 命令和生成的哈希文件 john zip_hash.txt 3、默认会使用内置字典进行攻击,也可以指定字典 john --wordlist=passwords.txt zip_hash.txt

爆破压缩文件的解压密码

解压文件

获取flag2

分析DMP文件

.dmp文件是Windows系统中的内存转储文件,通常在系统遇到严重错误时创建。这些文件包含有关系统崩溃时内存中的数据和状态的信息。

LSASS(Local Security Authority Subsystem Service)是Windows操作系统中负责处理本地安全机制的关键进程之一。LSASS进程包含了用户认证信息,如密码哈希值等。当LSASS进程崩溃或遇到问题时,系统可能会生成minidump文件(如lsass.DMP)来记录此时的内存转储信息。

使用pypykatz对其进行分析

1
2
3
pip install pypykatz
pypykatz lsa minidump lsass.DMP 
显示 lsass.DMP 中的隐藏的数据

[!note] NTLM哈希值,这是存储在系统上的密码的NT哈希

从中梳理出两个用户名:rajjasoos,对其密码hash进行md5解密 得到

1
2
raj/Password@1
jasoos/Password@1

ssh登录获取shell

探测网段发现其他存活主机

查看网卡信息,发现还存在一个docker网卡

编写shell脚本扫网段

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash
NETWORK_PREFIX="172.17.0"

# 开始和结束的主机号
START=1
END=254

# 用于存活主机的列表
ALIVE_HOSTS=()

# 扫描网段中的每个主机
for i in $(seq $START $END); do
    IP="$NETWORK_PREFIX.$i"
    # 使用ping命令
    ping -c 1 -W 1 $IP > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        ALIVE_HOSTS+=($IP)
        echo "Host $IP is alive"
    else
        echo "Host $IP is not reachable"
    fi
done

# 显示存活的主机
echo "Alive hosts in the network:"
for host in "${ALIVE_HOSTS[@]}"; do
    echo $host
done

发现还存活一台主机,ip是172.17.0.2

ftp匿名登录

编写脚本探测端口开放情况

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/bin/bash

network_prefix="172.17.0"  # 修改为你的网络前缀
start_ip=1
end_ip=254
start_port=1
end_port=1024

for ip in $(seq $start_ip $end_ip); do
    for port in $(seq $start_port $end_port); do
        (echo > /dev/tcp/$network_prefix.$ip/$port) >/dev/null 2>&1 && echo "Port $port is open on $network_prefix.$ip"
    done
done

发现还开放了21端口,ftp

ftp匿名登录,查看文件信息

将其下载下来,查看 python -m SimpleHTTPServer 关于saboot.001

saboot.001 是一个包含NTFS文件系统引导扇区的文件,它为包含的 NTFS 分区提供了许多详细的元数据。这个文件系统可能是 Windows 操作系统的一部分,从引导扇区的信息可以推测这可能是一个磁盘镜像的一部分,或者是从一个实际系统中提取的分区首部数据。

分析磁盘文件

方法一:使用autopsy

Autopsy 是一种开源数字取证工具,广泛用于各种数字取证和网络安全分析过程中。它提供了一个用户友好的图形界面,使调查人员能够从存储设备如硬盘、SD卡和USB驱动器中提取和分析潜在的证据。它通常与底层的 Sleuth Kit 工具包结合使用。

这里由于无法访问到ip,没有作尝试,参考教程

方法二:挂载磁盘到本地查看

  • -o 选项用来传递给 mount 命令的参数,这里包含两个选项:
    • loop:这个选项告诉系统要使用回环设备来挂载文件。回环设备允许你把一个文件当作一个块设备,从而可以被挂载为文件系统。例如,你可以把一个磁盘镜像文件当作一个实际的磁盘来操作。
    • ro:这个选项表示以只读方式挂载文件系统。这样做可以防止对文件系统的任何修改。

成功获取到flag3

creds.txt内容进行base64解密得到forensic的密码(尝试之后才知道是他的密码)

SUDO提权

获取root flag

总结

1、这台靶机是中级难度,确实比容易靶机要绕弯子一些,首先是解密绕弯子,有各种解密,PGP、压缩包、base64,这里学会了如何破解压缩文件的解压密码,当然也是需要制作合适的字典

2、到获取flag1那步,之前都是自己独立思考的,后面就是摸着wp过河,很是艰难,这次完善了目录遍历的方式,之前收集的不够全面,导致遗漏关键信息,这次使用的是 gobuster

3、认识新文件,DMP文件,学会了如何去简单分析。这里看下来有点取证的感觉了hh

4、这次觉得比较新颖的点是有个docker网关,学会写bash脚本来探测主机和端口【bash脚本我的理解是比较简易能用,这很适合很多被限制了的主机里,所以用bash而不是Python或其他】

5、学习了分析磁盘文件的方法,最简单的就是挂载到本机查看其中内容

Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计
本博客已稳定运行