题目
2023某省电子取证比武题目复盘WP,最全最详细
看一遍wp相当于做一遍题
第一部分 服务器取证
1.请对所给服务器检材进行分析,请写出管理员安装“mdadm-4.1-9.el7_9.x86_64”的时间?(答案格式:18:18:18) 13:13:01
该服务器涉及软raid,server1.001、server2.001、server3.001构成了数据盘, server4.001是系统盘
通过大小也可以看出来,因为server1.001、server2.001、server3.001三个镜像文件大小一样
首先用美亚的软件,仿真大师版本V6.2.04095Beta
方法一(行不通):四个镜像文件全部丢尽仿真大师,把server4.001设置为主盘
仿真后进入系统,查看磁盘信息
[root@server ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 70G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 69G 0 part
├─centos-root 253:0 0 45G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 22G 0 lvm /home
sdb 8:16 0 1G 0 disk
sr0 11:0 1 1024M 0 rom
[root@server ~]# fdisk -l
Disk /dev/sda: 75.2 GB, 75161927680 bytes, 146800640 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00099847
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 146800639 72350720 8e Linux LVM
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xd3b04b88
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2097151 1047552 fd Linux raid autodetect
Disk /dev/mapper/centos-root: 48.3 GB, 48335159296 bytes, 94404608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-home: 23.6 GB, 23597154304 bytes, 46088192 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
可以看到可以识别到Linux raid autodetect,注意这里把/dev/sdb识别成了1G,实际应该是2G
当尝试用dumpe2fs命令查看,或者用mount命令挂载时:
[root@server ~]# dumpe2fs /dev/sdb1 | more
dumpe2fs 1.42.9 (28-Dec-2013)
dumpe2fs: No such file or directory while trying to open /dev/sdb1
Couldn’t find valid filesystem superblock.
[root@server ~]# dumpe2fs /dev/sdb | more
dumpe2fs 1.42.9 (28-Dec-2013)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sdb
Couldn’t find valid filesystem superblock.
[root@server ~]# mount /dev/sdb1 /data
mount: special device /dev/sdb1 does not exist
[root@server ~]# mount /dev/sdb /data
mount: unknown filesystem type ‘linux_raid_member’
[root@server ~]#
可见本方法行不通
方法二:取证大师 + 仿真大师
1.取证大师新建案例,添加设备,添加镜像,选中三个镜像文件,然后点击打开
2.取证大师会弹出提示,“发现动态磁盘,是否继续解析动态磁盘”,“发现FAT32分区,可使用FAT32高级恢复”进一步分析”,都点击是
弹出自动取证,直接关掉
在证据文件界面,右击RAID-5,选择挂载为本地磁盘
等待挂载完毕,打开仿真大师,添加镜像文件server4.001,并设置为主盘,然后添加刚刚挂载的本地磁盘
点击开始仿真进入系统,注意修改/etc/hosts.allow文件,把IP地址改为all,才能用ssh远程连接
[root@server \~]\# **lsblk**
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 70G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 69G 0 part
├─centos-root 253:0 0 45G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 22G 0 lvm /home
sdb 8:16 0 2G 0 disk
sr0 11:0 1 1024M 0 rom
[root@server \~]\# **fdisk -l**
Disk /dev/sdb: 2143 MB, 2143289344 bytes, 4186112 sectors
Units = sectors of 1 \* 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 75.2 GB, 75161927680 bytes, 146800640 sectors
Units = sectors of 1 \* 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00099847
Device Boot Start End Blocks Id System
/dev/sda1 \* 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 146800639 72350720 8e Linux LVM
Disk /dev/mapper/centos-root: 48.3 GB, 48335159296 bytes, 94404608 sectors
Units = sectors of 1 \* 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 \* 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-home: 23.6 GB, 23597154304 bytes, 46088192 sectors
Units = sectors of 1 \* 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
[root@server \~]\#
使用dumpe2fs命令查看,可以看到挂载点为/data1
[root@server \~]\# **dumpe2fs /dev/sdb \| more**
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: \<none\>
Last mounted on: /data1
Filesystem UUID: fc374f40-2e32-4252-8925-671a890768fc
Filesystem magic number: 0xEF53
Filesystem revision \#: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 130816
Block count: 523264
Reserved block count: 26163
然后使用mount命令进行挂载,挂载成功
[root@server \~]\# **mount /dev/sdb1 /data**
mount: special device /dev/sdb1 does not exist
[root@server \~]\# **mount /dev/sdb /data**
[root@server \~]\# **cd /data**
[root@server data]\# **ls**
2023.cn backup lost+found
[root@server data]\#
可见该方案可行
方法三:R-studio + 仿真大师
R-studio版本如下:
使用R-studio重组server1.001、server2.001、server3.001,并导出为镜像文件,方法步骤如下:
打开仿真大师,添加镜像文件server4.001,并设置为主盘,然后添加刚刚重组的镜像文件
点击开始仿真,进入系统,查看磁盘信息如下:
[root@server \~]\# **lsblk**
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 70G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 69G 0 part
├─centos-root 253:0 0 45G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 22G 0 lvm /home
sdb 8:16 0 2G 0 disk
sr0 11:0 1 1024M 0 rom
[root@server \~]\# **fdisk -l**
Disk /dev/sdb: 2143 MB, 2143289344 bytes, 4186112 sectors
Units = sectors of 1 \* 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 75.2 GB, 75161927680 bytes, 146800640 sectors
Units = sectors of 1 \* 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00099847
Device Boot Start End Blocks Id System
/dev/sda1 \* 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 146800639 72350720 8e Linux LVM
Disk /dev/mapper/centos-root: 48.3 GB, 48335159296 bytes, 94404608 sectors
Units = sectors of 1 \* 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 \* 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-home: 23.6 GB, 23597154304 bytes, 46088192 sectors
Units = sectors of 1 \* 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
dumpe2fs命令可以看到最后挂载点为/data1,mount命令可以成功挂载磁盘
[root@server \~]\# **dumpe2fs /dev/sdb \| more**
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: \<none\>
Last mounted on: /data1
Filesystem UUID: fc374f40-2e32-4252-8925-671a890768fc
Filesystem magic number: 0xEF53
Filesystem revision \#: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
[root@server \~]\# **mount /dev/sdb /data**
[root@server \~]\# **cd /data**
[root@server data]\# **ls**
2023.cn backup lost+found
[root@server data]\#
方法四:UFS + 仿真大师,也可以仿真并挂载数据盘成功
但经过实际操作,火眼仿真一直都无法挂载数据盘,不知道为什么
本题直接仿真server4.E01也是可以仿真起来的,但是没有数据据盘
数据重组的方式:
方式一:如果Rstudio是8.0版本的,需要先使用FTK或者AIM将1、2、3号镜像挂载,再使用rstudio重组输出镜像,输出内容为data分区,
方式二:如果Rstudio是9.0版本的,则可以直接通过Rstudio进行raid重组,将数据分区导出
使用4号盘作为系统盘,添加输出的镜像并仿真,使用mount命令将磁盘挂载到data分区
火眼仿真在加载的时候,注意先加载系统盘,也就是server4.E01,然后在加载Rstudio导出的数据卷
仿真后,发现SSH连不上,这是因为需要修改/etc/hosts.allow文件,把IP地址改成all,注意不是删掉,删掉后还是登录不上
\# hosts.allow This file contains access rules which are used to
\# allow or deny connections to network services that
\# either use the tcp_wrappers library or that have been
\# started through a tcp_wrappers-enabled xinetd.
\#
\# See 'man 5 hosts_options' and 'man 5 hosts_access'
\# for information on rule syntax.
\# See 'man tcpd' for information on tcp_wrappers
sshd:all:allow
下面看第一题:先用rpm -qa命令查看完整包名,
然后用rpm -qi + 完整包名 命令查看详细信息,如下
[root@server \~]\# **rpm -qa mdadm**
mdadm-4.1-9.el7_9.x86_64
可见完整包名是mdadm-4.1-9.el7_9.x86_64
[root@server \~]\# **rpm -qi mdadm-4.1-9.el7_9.x86_64**
Name : mdadm
Version : 4.1
Release : 9.el7_9
Architecture: x86_64
Install Date: **Thu 16 Feb 2023 01:13:01 PM CST**
Group : System Environment/Base
Size : 1075374
License : GPLv2+
Signature : RSA/SHA256, Thu 24 Feb 2022 09:53:37 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : mdadm-4.1-9.el7_9.src.rpm
Build Date : Thu 24 Feb 2022 01:09:53 AM CST
Build Host : x86-02.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem \<http://bugs.centos.org\>
Vendor : CentOS
URL : http://www.kernel.org/pub/linux/utils/raid/mdadm/
Summary : The mdadm program controls Linux md devices (software RAID arrays)
Description :
The mdadm program is used to create, manage, and monitor Linux MD (software
RAID) devices. As such, it provides similar functionality to the raidtools
package. However, mdadm is a single program, and it can perform
almost all functions without a configuration file, though a configuration
file can be used to help with some common tasks.
[root@server \~]\#
注意PM指的时下午时间,要加上12小时
2.请对所给服务器检材进行分析,请写出宝塔默认建站的目录是什么?(答案格式:/abc/def)/data
/data
在宝塔的设置选项卡中查找
使用bt命令查看把他面板登录入口,并重置登录密码为123456
[root@server data]\# **bt**
===============宝塔面板命令行==================
(1) 重启面板服务 (8) 改面板端口
(2) 停止面板服务 (9) 清除面板缓存
(3) 启动面板服务 (10) 清除登录限制
(4) 重载面板服务 (11) 取消入口限制
(5) 修改面板密码 (12) 取消域名绑定限制
(6) 修改面板用户名 (13) 取消IP访问限制
(7) 强制修改MySQL密码 (14) 查看面板默认信息
(22) 显示面板错误日志 (15) 清理系统垃圾
(23) 关闭BasicAuth认证 (16) 修复面板(检查错误并更新面板文件到最新版)
(24) 关闭谷歌认证 (17) 设置日志切割是否压缩
(25) 设置是否保存文件历史副本 (18) 设置是否自动备份面板
(0) 取消
===============================================
请输入命令编号:**14**
===============================================
正在执行(14)...
===============================================
curl: (28) Resolving timed out after 10563 milliseconds
==================================================================
BT-Panel default info!
==================================================================
外网面板地址: http://:8888/12345678
内网面板地址: http://192.168.198.137:8888/12345678
username: hl123
password: 736aac7d
If you cannot access the panel,
release the following panel port [8888] in the security group
若无法访问面板,请检查防火墙/安全组是否有放行面板[8888]端口
==================================================================
[root@server data]\# **bt**
===============宝塔面板命令行==================
(1) 重启面板服务 (8) 改面板端口
(2) 停止面板服务 (9) 清除面板缓存
(3) 启动面板服务 (10) 清除登录限制
(4) 重载面板服务 (11) 取消入口限制
(5) 修改面板密码 (12) 取消域名绑定限制
(6) 修改面板用户名 (13) 取消IP访问限制
(7) 强制修改MySQL密码 (14) 查看面板默认信息
(22) 显示面板错误日志 (15) 清理系统垃圾
(23) 关闭BasicAuth认证 (16) 修复面板(检查错误并更新面板文件到最新版)
(24) 关闭谷歌认证 (17) 设置日志切割是否压缩
(25) 设置是否保存文件历史副本 (18) 设置是否自动备份面板
(0) 取消
===============================================
请输入命令编号:**5**
===============================================
正在执行(5)...
===============================================
请输入新的面板密码:123456
\|-用户名: hl123
\|-新密码: 123456
[root@server data]\#
打开面板后,在面板设置选项卡中,可以看到默认建站目录
3.请对所给服务器检材进行分析,请写出ip为192.168.157.1的机器登陆失败的时间是什么时候?(答案格式:xxxx-xx-xx xx:xx:xx)
使用lastb -F命令
[root@server data]\# **lastb -F**
root ssh:notty 192.168.157.1 Fri Oct 9 16:47:29 2020 - Fri Oct 9 16:47:29 2020 (00:00)
btmp begins Fri Oct 9 16:47:29 2020
4.请对所给服务器检材进行分析,写出网站的数据库root帐号密码?(答案格式:xxxx)
hl@7001
网站的数据库并不是系统中的数据库,而是docker中的数据库
[root@server data]\# **docker ps**
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[root@server data]\# **systemctl start docker**
[root@server data]\# **docker ps**
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@server data]\# **docker ps -a**
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8fbd1968d75e mysql:5.7 "docker-entrypoint..." 12 months ago Exited (0) 12 months ago mysql
[root@server data]\# **docker start 8**
8
[root@server data]\# **docker ps**
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8fbd1968d75e mysql:5.7 "docker-entrypoint..." 12 months ago Up 1 second 33060/tcp, 0.0.0.0:3307-\>3306/tcp mysql
[root@server data]\# **docker inspect 8**
[
{
"Id": "8fbd1968d75efc41d850303383d2ab18d25d9cfc08e1414de05a2666a44c0824",
"Created": "2023-02-16T04:49:18.582354134Z",
"Path": "docker-entrypoint.sh",
"Args": [
"mysqld"
docker inspect 命令会有数据库root密码:
"Env": [
"MYSQL_ROOT_PASSWORD=**hl@7001**",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOSU_VERSION=1.16",
"MYSQL_MAJOR=5.7",
"MYSQL_VERSION=5.7.41-1.el7",
"MYSQL_SHELL_VERSION=8.0.32-1.el7"
],
注意,并不是连接的宝塔面板的mysql,而是连接的docker数据库里面的mysql数据库
如何去判断网站用的是宝塔的mysql还是docker的MySQL呢?
根据端口去判断,一个是3306端口,而实际用的docker里面的是3307端口,
网站具体用的数据库端口要去看代码源文件中的数据库配置文件database.php
打开database.php文件后,发现是加密的,将z0变量的内容进行base64解码,得到数据库连接信息
由此可以看到数据实际连接的端口是3307,这和docker的信息相对应,而不同于本地的mysql的3306端口
5.请对所给服务器检材进行分析,请分析网站后台管理员帐号的加密方式(答案格式:xx($xx.xxx($xxx))
md5($salt.trim($pwd))
宝塔上给网站绑定13001端口,然后点击IP尝试打开网站
(注意首先要把docker启动,然后启动mysql容器,否则网站也打不开)
前台弹出页面如下
访问后台http://192.168.198.137:13001/4008003721.php(后台url可以看网站访问日志找到,可以在网站运行目录/public中找),页面如下
通过FTP将解密后的数据库连接信息,覆盖到database.php文件中
网站前后台页面仍然打不开
给网站目录授予权限
看报错信息应该是权限错误但是在xshell上通过chmod 777 网站目录后,还是打不开,最后通过宝塔页面授权后打开了,奇怪
现在前台能打开了,但是后台还是显示file not found
最后在路径中加上public,打开了后台页面
这可能是运行目录的/pulic设置没有生效吧
或者直接访问http://192.168.198.137:13001/admin.php也可以打开后台页面
通过navicat连接上docker里面的mysql数据库,查看管理员的用户名为admin
使用admin登录,密码随便输入,查看报错信息为“密码错误”:
在源代码中检索关键字“密码错误”
(导出源代码时先通过命令tar命令压缩,然后通过FTP导出 )
[root@server data]\# **cd /data**
[root@server data]\# **ls**
2023.cn backup lost+found
[root@server data]\# **tar -cvzf 2023.tar.gz 2023.cn**
[root@server data]\# ls
2023.cn **2023.tar.gz** backup lost+found
[root@server data]\#
function LoginPwdEncryption(\$pwd, \$salt)
{
return md5(\$salt.trim(\$pwd));
}
后台的登录页面url可以查看web日志,也可以在public目录下面查找疑似的php文件
6.请对所给服务器检材进行分析,网站首页友情链接中的“弘连网络“的更新时间是什么时候?(答案格式:xxxx-xx-xx xx:xx:xx)
2023-02-16 15:02:29
直接在源码中检索
但是存在一个问题:用vscode搜不到,但是用filelocator是可以搜到的,足见该软件的强大
如上图,vscode检索不到
如上图,filelocator可以检索到
在该文件中可以看到更新时间"upd_time";s: 19: “2023-02-16 15:02:29”;
7.请对所给服务器检材进行分析,网站后台管理页面入口文件名是什么?(答案格式:xxx.php)
4008003721.php
发现一个问题,有的时候仿真可以直接通过IP:端口/4008003721.php进入后台登录页面,但是有的时候需要加上public路径,IP:端口/public/4008003721.php
8.请对所给服务器检材进行分析,网站数据库备份文件的sha256的值是多少?(答案格式:a656ac5f9e9d3bc2915aec31a5dfd0bd3bd3ef1ac497016dafae43669d7d6d22不区分大小写)
9dede75e455a7c4c5cc4b61e41570adf82af25251c5fd8456a637add864b0af0
在两个位置可以找到该备份文件
位置一:/data/backup
该路径下有个隐藏文件.shop1.zip,解压后可以得到数据库备份文件
位置二:/www/backup/database
该路径下也有个隐藏文件.shop1.zip,和位置一是一个文件
通过下题题干可知,题目指的数据库备份文件指的是zip文件,而不是解压后的sql文件
C:\\Users\\renfe\\Desktop\\fupan\\天津初赛\\.shop1\>certutil -hashfile C:\\Users\\renfe\\Desktop\\fupan\\天津初赛\\.shop1.zip sha256
SHA256 的 C:\\Users\\renfe\\Desktop\\fupan\\天津初赛\\.shop1.zip 哈希:
9dede75e455a7c4c5cc4b61e41570adf82af25251c5fd8456a637add864b0af0
CertUtil: -hashfile 命令成功完成。
9.请对所给服务器检材进行分析,网站数据库备份文件的解压密码是多少?(答案格式:xxxxxxx区分大小写)
该压缩文件是有密码的
[root@server backup]\# cd /data/backup/
[root@server backup]\# ls
database shop1.sql site
[root@server backup]\# ls -a
. .. database shop1.sql .shop1.zip site
[root@server backup]\# unzip .shop1.zip
Archive: .shop1.zip
[.shop1.zip] 20230216182549.sql password:
此时的思路是导出zip文件用passware进行爆破,查看关键目录有没有类似密码本的文件
查看root目录时找到了密码字典文件
[root@server \~]\# ls -a
. .bash_logout .cshrc .pearrc .readme.txt .tcshrc
.. .bash_profile .DPINST.LOG .PFRO.log .rnd **.w0rd.txt**
anaconda-ks.cfg .bashrc .DtcInstall.log .pip .setupact.log .WindowsUpdate.log
.bash_history .cache install.sh .pki .setuperr.log
[root@server \~]\#
导出.shop1.zip文件和.w0rd.txt文件,启动passware
使用passware通过字典暴力破解zip压缩文件的步骤如下:
22Ga#ce3ZBHV&Fr59fE#
22Ga#ce3ZBHV&Fr59fE#
10.请对所给服务器检材进行分析,商城中“弘连火眼手机分析专用机MT510”商品的原价是多少?(只填写数字,精确到小数点后2位:9999.99)
本题需要将解密的sql文件还原到数据库中,然后在后台页面搜索关键字MT510,这样才能检索到答案
1398000
第二部分 流量分析
1.请分析流量分析.pcapng文件,并回答入侵者的IP地址是? 192.168.85.130
192.168.85.130
查看会话统计和端点统计
发现一共就两个IP地址,分别是192.168.85.130和192.168.85.250
分别查看两个IP之间的HTTP数据包分组
过滤语句ip.src == 192.168.85.130 && ip.dst == 192.168.85.250 && http
过滤语句ip.src == 192.168.85.250 && ip.dst == 192.168.85.130 && http
由此可以看出,一直都是130在请求250,250一直在反馈信息,所以入侵者的IP地址是192.168.85.130
2.请分析流量分析.pcapng文件,并回答被入侵计算机中的cms软件版本是?(答案格式:1.1.1)ver=5.2.1
5.2.1
在很多分组中都有css的版本信息,根据版本出现时的上下文格式,在搜索栏检索关键字“css?ver=”,可以定位到相应的位置
3.请分析流量分析.pcapng文件,并回答被入侵计算机中的MySQL版本号是?(答案格式:1.1.1) admin@12345
5.5.53
全局检索分组字节流,搜索关键字version,依次往下找,在1941分组中找到相关信息
追踪TCP流
可以看到mysql的版本是5.5.53
在1675分组中也可以看到版本信息
只有以上两处有MySQL的版本信息
4.请分析流量分析.pcapng文件,并回答被入侵计算机中的MySQL root账号密码是?
admin@12345
既然是入侵爆破,那么肯定是130向250发起请求,并且因为要传参数,所以请求一般是POST
过滤语句:
ip.src == 192.168.85.130 && ip.dst == 192.168.85.250 && http.request.method==POST
(注意http是小写,POST是大写,等号和&都是两个)
通过上图可以看到,130一直在向250发起POST请求,并且尝试不同的密码,而最后尝试的密码是admin@12345,即第1459分组,在往下就页面就发生了变化,所以admin@12345很有可能就是正确的密码
为了验证是否正确,下面分别追踪密码是admin@12345的请求和其他密码的分组的HTTP流,
Cannot log in to the MySQL server密码错误的提示信息,如果密码正确,则不会有此提示
由此可见,无法根据返回数据分组的状态码,判断正确密码是哪个,
实际应该根据重定向后的分组中的html页面的提示信息去判断
或者进行过滤后,找最后一个发出的密码
5.请分析流量分析.pcapng文件,并回答入侵者利用数据库管理工具创建了一个文件,该文件名为?
这里的数据库管理工具就是phpmyadmin
所以题干的意思就是入侵者用phpmyadmin创建的文件是什么
所以使用过滤语句
所以通过题目可以挖掘的过滤条件有这么几个:
- 既然是入侵者的操作,那么分组的方向是130到250
- 我们都知道phpmyadmin是通过浏览器来管理数据库的,那么分组的协议应该是http
- 既然创建了文件,那么肯定要发送创建文件的相关命令参数,那么肯定是POST请求
所以过滤语句如下
ip.src192.168.85.130 && ip.dst192.168.85.250&&http.request.method==POST
一共过滤出了56个数据包,前面的都是爆破时的数据请求分组,重点查看后面的几个数据包
在1858分组中,查看到了与文件有关的操作,入侵者用SET GLOBAL命令设置了一般查询日志的日志问文件
日志路径设置好后,并不会立刻新建相应的文件,而是在下次产生日志的时候自动创建
所以答案是:06b8dcf11e2f7adf7ea2999d235b8d84.php
SET GLOBAL general_log_file=‘C:\\phpStudy\\PHPTutorial\\www\\06b8dcf11e2f7adf7ea2999d235b8d84.php’
6.请分析流量分析.pcapng文件,并回答被入侵计算机中PHP环境禁用了几个函数?5填空10
本题有两个思路
思路一:PHP禁用的函数会用disable_function变量标识,所以全局检索关键字disable_function
可以直接看数据包,也可以将html页面内容存储到txt文件中,后缀名改为html,用浏览器查看,如下
思路二:php一般会禁用类似"exec"、“system”、"eval"这样的函数,全局检索可以找到对应位置
7.请分析流量分析.pcapng文件,并回答入侵者提权后,执行的第1条命令是?5填空dir
常识普及
Cmd命令行终端,如果是普通用户,界面如下:
如果是管理员,界面如下:
可见管理员的默认位置是C:\Windows\System32>
入侵者提权后,肯定是管理员权限,所以肯定在C:\Windows\System32>,
全局检索关键字“System32”
一共过滤除了17个数据包,右键点击上面5323那个紫色的数据分组,追踪TCP流,可以看到执行的命令
8.请分析流量分析.pcapng文件,并回答被入侵计算机开机时间是?(答案格式20xx/x/xx xx:xx:xx)6填空2019/6/13 18:50
以上是systeminfo命令的执行结果,可以看到第一个时间是初始安装日期,第二个时间就是系统启动时间
在上题追踪TCP流的结果中,可以看到第二条命令就是systeminfo,
根据命令的输出结果,可以看到系统启动时间是2019/6/13, 18:50:33
9.请分析流量分析.pcapng文件,并回答被入侵计算机桌面上的文件中flag是?(答案格式:abcdef123456789)5填空3f76818f507fe7e66422bd0703c64c88
弹出的TCP流中,直接拖到最后,发现在桌面上有个md文件,并且查看了其内容
10.“请分析流量分析.pcapng文件,并回答图片文件中的flag是?(答案格式:abcdef123456789)” 7填空d31c1d06331a9534bf41ab93afca8d31
直接过滤http数据包,在最后的几个分组中,发现了文件flag.png
直接追踪流,可以发现flag值
第三部分 apk程序分析
请分析“检材.apk”,
1.获取app安装包的SHA256校验值
e15095d49efdccb0ca9b2ee125e4d8136cac5f74c1711f44c6347598ffb1bd7b
Microsoft Windows [版本 10.0.22621.3155]
(c) Microsoft Corporation。保留所有权利。
E:\\上海弘连出的题目\\HL2天津初赛20231024\\3.apk程序分析检材\>certutil -hashfile E:\\上海弘连出的题目\\HL2天津初赛20231024\\3.apk程序分析检材\\检材.apk sha256
SHA256 的 E:\\上海弘连出的题目\\HL2天津初赛20231024\\3.apk程序分析检材\\检材.apk 哈希:
e15095d49efdccb0ca9b2ee125e4d8136cac5f74c1711f44c6347598ffb1bd7b
CertUtil: -hashfile 命令成功完成。
2.获取app运行后的进程名
com.appk6.chat
在安卓系统中,APK的包名通常是作为应用程序进程的唯一标识符。也就是说,APK的包名通常会被用作应用程序进程的名称。
当你安装一个APK时,Android系统会为该应用程序分配一个唯一的用户ID、Linux UID和GID,并将应用程序进程命名为其包名。在运行应用程序时,Android系统将使用应用程序的包名来启动其进程,并在执行期间使用该名称来保持对应用程序进程的跟踪。
请注意,在某些情况下,应用程序的进程名称可能会与其包名略有不同,例如包含特殊字符或空格的包名。此外,如果应用程序启动了多个进程,这些进程的名称可以添加前缀或后缀以区分它们。但是,在绝大多数情况下,APK的包名确实是应用程序进程的名称。
3.获取app安装包签名证书的签名序列号 3填空0x4a5f7527
4.获取该APP安装后显示的APP名称5填空 爱聊
App安装后的名称存储在resources.arsc下面的res/values/下面的strings.xml文件中,变量名为app_name
5.该APP是否具备读取短信的权限5 填空否
这个APP包含以下权限:
android.permission.RECEIVE_USER_PRESENT:允许应用程序在用户解锁屏幕后接收通知。
android.permission.WAKE_LOCK:允许应用程序保持设备唤醒状态,以便在设备空闲时执行任务。
android.permission.INTERNET:允许应用程序通过互联网连接到其他设备或服务器。
android.permission.ACCESS_WIFI_STATE:允许应用程序查看Wi-Fi连接状态和信息。
android.permission.ACCESS_NETWORK_STATE:允许应用程序查看网络连接状态和信息。
android.permission.RESTART_PACKAGES:允许应用程序重新启动其他应用程序。
android.permission.BROADCAST_STICKY:允许应用程序发送黏性广播,以便其他应用程序可以在稍后接收它们。
android.permission.WRITE_SETTINGS:允许应用程序修改系统设置。
android.permission.READ_EXTERNAL_STORAGE:允许应用程序读取外部存储设备上的文件。
android.permission.WRITE_EXTERNAL_STORAGE:允许应用程序向外部存储设备写入文件。
android.permission.KILL_BACKGROUND_PROCESSES:允许应用程序结束其他后台进程。
android.permission.READ_LOGS:允许应用程序读取系统日志文件。
android.permission.VIBRATE:允许应用程序控制设备的震动功能。
android.permission.CHANGE_NETWORK_STATE:允许应用程序更改网络连接状态。
android.permission.MODIFY_AUDIO_SETTINGS:允许应用程序修改音频设置。
android.permission.CHANGE_WIFI_STATE:允许应用程序更改Wi-Fi连接状态。
android.permission.RECEIVE_BOOT_COMPLETED:允许应用程序在设备启动时自动启动。
android.permission.GET_TASKS:允许应用程序检索当前正在运行的任务信息。
org.simalliance.openmobileapi.SMARTCARD:允许应用程序使用智能卡。
android.permission.CLEAR_APP_CACHE:允许应用程序清除其他应用程序的缓存。
android.permission.FLASHLIGHT:允许应用程序控制设备的闪光灯。
android.hardware.location.gps(特征):如果设备具有GPS硬件,则应用程序可以使用它。
android.hardware.location(特征):如果设备具有位置服务,则应用程序可以使用它。
android.hardware.location.network(特征):如果设备可以使用网络位置,则应用程序可以使用它。
android.hardware.telephony(特征):如果设备具有电话硬件,则应用程序可以使用它。
android.hardware.camera(特征):如果设备具有相机硬件,则应用程序可以使用它。
android.hardware.camera.autofocus(特征):如果设备相机支持自动对焦,则应用程序可以使用它。
android.hardware.wifi(特征):如果设备具有Wi-Fi硬件,则应用程序可以使用它。
android.hardware.bluetooth(特征):如果设备具有蓝牙硬件,则应用程序可以使用它。
android.permission.REQUEST_INSTALL_PACKAGES:允许应用程序请求安装新的应用程序。
android.permission.FOREGROUND_SERVICE:允许应用程序在前台运行服务。
android.permission.CAMERA:允许应用程序访问设备相机。
android.permission.RECORD_AUDIO:允许应用程序录制音频。
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS:允许应用程序访问额外的位置提供程序命令。
android.permission.ACCESS_FINE_LOCATION:允许应用程序访问GPS定位服务。
android.permission.ACCESS_GPS:允许应用程序访问GPS定位服务。
android.permission.ACCESS_ASSISTED_GPS:允许应用程序访问辅助GPS定位服务。
android.permission.ACCESS_COARSE_LOCATION:允许应用程序访问网络定位服务。
android.permission.READ_PHONE_STATE:允许应用程序读取设备的电话状态和身份识别信息。
android.permission.MOUNT_UNMOUNT_FILESYSTEMS:允许应用程序挂载和卸载文件系统。
android.permission.USE_FINGERPRINT:允许应用程序使用设备的指纹传感器。
com.fingerprints.service.ACCESS_FINGERPRINT_MANAGER:允许应用程序访问指纹管理器。
com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY:允许应用程序写入使用情况统计
数据到设备。
在 Android 应用程序的 XML 清单文件中声明读取短信权限的代码如下所示:
\<uses-permission android:name="android.permission.READ_SMS" /\>
6.该APP调用的TencentMapSDK对应的KEY是
5 填空 ANQBZ-ELQW5-2EFIN-QLKQ2-RZU4O-KVB7I
在AndroidManifest.xml配置文件中,检索关键字“TencentMapSDK”
7.获取该APP连接的URL?7填空chat.ailiao.club
8.分析该APP配置文件“app_config.xml”,回答其加密内容时使用的算法
AES +BASE64
将“检材.apk”文件更改后缀名为.zip,并解压,在解压后的文件夹中检索文件名“app_config.xml”,找到响应文件
可以看到文件是加密的。
在jadx中,全局检索关键字“app_config.xml”,结果如下
打开响应代码进行分析
if (z) {
try {
stringBuffer2.append(h.a(stringBuffer.toString()));
} catch (Exception e5) {
e5.printStackTrace();
Toast.makeText(this, “解密错误!”, 0).show();
}
点击其中的h.a方法,进行跳转,跳转到具体的解密函数
package com.bslyun.app.utils;
import android.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
/* loaded from: classes.dex */
public class h {
public static String a(String str) {
try {
SecretKeySpec secretKeySpec = new SecretKeySpec("IUP4fLZ7wuNeOQtE".getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
cipher.init(2, secretKeySpec, new IvParameterSpec("handsomehandsome".getBytes()));
try {
return new String(cipher.doFinal(Base64.decode(str, 0)));
} catch (Exception e2) {
System.out.println(e2.toString());
return null;
}
} catch (Exception e3) {
System.out.println(e3.toString());
return null;
}
}
}
从以上代码中,可以看到是AES + Base64 加密
其中AES的key值是IUP4fLZ7wuNeOQtE,偏移量是handsomehandsome
使用CyberChef进行解密,解密成功
综上,答案是AES +BASE64
9.给出该APP配置文件“app_config.xml”中包含的升级唯一标识(inid)值
com.appk6.chat
<!-- 手势:0:关闭,1:前进后退,2:侧栏 --\>
<is_swipe\>0\</is_swipe\>
<!-- 升级唯一标识 --\>
<inid\>com.appk6.chat\</inid\>
10.通过对APP进行分析,回答该APP的打包日期
20210826
\<!-- app升级 --\>
\<api_updata2\>https://www.appbsl.cn/index.php/app_port/VersionInfo?time=**1629956512**\&appid=com.kgmpbd.kdwhxmt\</api_updata2\>
\<api_updata\>https://www.appbsl.net/index.php?g=port&m=Appverify&a=check&inid=com.kgmpbd.kdwhxmt&unionid=7\</api_updata\>
第四部分 exe程序分析
1.分析exe检材,后门程序1文件的sha256值为
c7f6b75ad747ed6cea922da062f02aa6e1d282da1b73111dec7022ac6b939c1c
C:\\Users\\renfe\\Desktop\\fupan\\密码123456,请勿在本机运行\>certutil -hashfile C:\\Users\\renfe\\Desktop\\fupan\\密码123456,请勿在本机运行\\ddos sha256
SHA256 的 C:\\Users\\renfe\\Desktop\\fupan\\密码123456,请勿在本机运行\\ddos 哈希:
c7f6b75ad747ed6cea922da062f02aa6e1d282da1b73111dec7022ac6b939c1c
CertUtil: -hashfile 命令成功完成。
2.分析exe检材,后门程序1导入表中共调用了多少个动态链接库
8
方法一:用StudyPE+ 查看
方法二:用DIE也可以看,勾选高级选项,选择导入
方法三:用CFF Explorer 也可以看
方法四:用IDA pro中,打开Import视图,在Library列中,列出的就是动态链接库,去重后计数,就是该exe程序调用了多少动态链接库
3.分析exe检材,,回答后门程序1中可能的主控域名为
方法一:使用字符串抽取工具(SysinternalsSuite工具包中的strings工具),对exe进行抽取,可以找到
D:\\ProgramFiles\\破解逆向解密隐写\\SysinternalsSuite2024_01_09\>strings C:\\Users\\renfe\\Desktop\\fupan\\密码123456,请勿在本机运行\\ddos
Strings v2.54 - Search for ANSI and Unicode strings in binary images.
Copyright (C) 1999-2021 Mark Russinovich
Sysinternals - www.sysinternals.com
在结果中检索与域名有关的字符串可以找到,但是该方法抽取到了860多条,很多很短的乱码字符串也抽取了出来,不好筛选,范围太大
方法二:用DIE可以直接看
方法三,用IDA pro可以看到
首先打开Strings视图
然后找到与域名有关的字符串
4.分析exe检材,后门程序1运行后,新建了一个可执行程序(以下称此可执行程序为后门程序2),其文件名为
WinHkoq32.exe
第一步:把“密码123456,请勿在本机运行.rar“拷贝进虚拟机,
第二步:关闭火绒杀毒软件
第三步:解压rar文件,并将ddos文件的后缀名改为exe
第四步:分别启动procexp.exe和Procmon.exe
第五步:双击运行ddos.exe,大约等待约20秒
第六步:筛选日志。切换到Process Monitor,根据进程名(Process Name)ddos.exe对日志信息进行筛选,点击Add,添加筛选条件,然后点击应用Apply,然后点击OK
第七步:导出过滤的日志。点击菜单栏File,然后选择Save…
弹出的窗口中,选择csv格式,将文件保存到桌面
第八步:将csv文件从虚拟机复制粘贴到本机,双击查看,按住CTRL + shift + L,进行筛选,筛选Operation为WriteFile的记录(因为CreateFile是打开文件,WriteFile才是创建文件)
可见创建的文件是WinHkoq32.exe
注意:如果反复运行,是不会再抓到WriteFile操作的记录的
本体思路总结:同时打开Proecess Monitor 和 Proecess Explorer,运行ddos.exe,等待10几秒,在Proecess Explorer中看到svchost.exe之后,再去Proecess Monitor里面导出进程记录,就会有writeFile的记录了
5.分析exe检材,后门程序2所在的文件路径为
C:\WINDOWS\system32
根据上题(第四题)题干,程序2就是WinHkoq32.exe
6.分析exe检材,通过分析后门程序2的运行过程发现,该恶意程序修改了一条系统注册表,请问修改的注册表为WinHovy32
如上题,RegSetValue操作就是修改注册表
这个题要去ProcessMonitor中导出WinHkoq32.exe进程记录,通过csv去过滤RegSetValue的信息
7.分析exe检材,被注入程序外连使用的协议为TCP
通过过滤,发现WinHovy32程序创建了新的进程,并且关闭了自己,所以,接下来的运行要看svchost,但是系统又很多svchost.exe,的进程,区分的依据就是PID,我们看到我们要找的这个svchost的进程PID为784
虚拟机中,通过PM过滤PID为784的进程记录,并且另存为csv,导出到本机通过WPS查看
8.分析exe检材,后门程序2在将恶意代码注入了某个可执行程序(以下称被注入程序)中,请问该可执行程序的名称为svchost.exe
9.分析exe检材,通过修改该注册表,后门程序2启动了一个服务,请问该服务的显示名称为Windows Hucp System
对WinHovy32的进程记录进行过滤,发现其注册了注册表,名称为WinHovy32,把自己加到了服务里面
通过查询
该程序把自己注册为一个服务,并且设置为自启动
10.分析exe检材,请问被注入程序外连的IP地址为47.107.55.222
方法一通过Process Explorer,双击需要查看的进程,可以再TCP/IP选项卡中看到相关的进程
方法二
Process Monitor软件,过滤出PID后,再Path栏,可以看到过滤出的IP地址
方法三
把程序放到虚拟中运行,虚拟机中运行火绒剑,在网络选项卡中可以看到外链的IP地址