grep -a -a 将二进制文件当作文本文件处理

Linux日志通常存储在 /var/log 目录下,常见的如下:

/var/log/syslog 记录系统的各种信息和错误。
/var/log/auth.log 记录身份验证相关的信息,如登录和认证失败。
/var/log/kern.log 记录内核生成的日志信息。
/var/log/dmesg 记录系统启动时内核产生的消息。
/var/log/boot.log 记录系统启动过程中的消息。
/var/log/messages 记录系统的广泛消息,包括启动和应用程序信息。
/var/log/secure 记录安全相关的消息。
/var/log/httpd/ 记录Apache HTTP服务器的访问和错误日志(若安装了Apache)。
/var/log/nginx/ 记录Nginx服务器的访问和错误日志(若安装了Nginx)。

常见网站日志的路径

  1. IIS(Internet Information Services)

    • IIS是Windows上的默认Web服务器,其日志文件默认存储在以下路径:

      • IIS 6.0 及更早版本:

      • C:\WINDOWS\system32\LogFiles\W3SVC[SiteID]\

      • IIS 7.0 及更高版本:

      • C:\inetpub\logs\LogFiles\W3SVC[SiteID]\

      • 其中,[SiteID] 是网站的标识符,通常是一个数字。

  2. Apache HTTP Server

    • 如果在Windows上安装了Apache,日志文件默认存储在安装目录下的logs文件夹中:

      • C:\Program Files (x86)\Apache Group\Apache2\logs\

      或者

      • C:\Program Files\Apache Group\Apache2\logs\
      • 具体路径取决于安装时选择的位置。
    • 在Linux上,Apache日志文件通常位于以下目录:

    • 访问日志:

      • /var/log/apache2/access.log

      或者

      • /var/log/httpd/access_log

      错误日志:

      • /var/log/apache2/error.log

      • /var/log/httpd/error_log

      不同的Linux发行版可能有不同的目录。例如,在Debian/Ubuntu上通常使用/var/log/apache2/,而在Red Hat/CentOS上通常使用/var/log/httpd/。

  3. Nginx

    • Nginx是另一个流行的Web服务器,默认的日志文件路径如下:

访问日志:

/var/log/nginx/access.log

错误日志:

/var/log/nginx/error.log。

webshell

手动排查webshell

  1. 静态检测
    • 我们可以查找一些特殊后缀结尾的文件。例如:.asp、.php、.jsp、.aspx。然后再从这类文件中查找后门的特征码,特征值,危险函数来查找webshell,例如查找内容含有exec()、eval()、system()的文件。
    • 优点:快速方便,对已知的webshell查找准确率高,部署方便,一个脚本就能搞定。
    • 缺点:漏报率、误报率高,无法查找0day型webshell,而且容易被绕过。
  2. 动态检测
    • webshell执行时刻表现出来的特征,我们称为动态特征。只要我们把webshell特有的HTTP请求/响应做成特征库,加到IDS里面去检测所有的HTTP请求就好了。
    • webshell如果执行系统命令的话,会有进程。Linux下就是起了bash,Win下就是启动cmd,这些都是动态特征。
  3. 日志检测
    • 使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页面的访问数据和数据提交记录。
    • 日志分析检测技术通过大量的日志文件建立请求模型从而检测出异常文件,例如:一个平时是GET的请求突然有了POST请求并且返回代码为200。

image-20260412195324691

1
2
3
4
5
6
7
8
//搜索目录下适配当前应用的网页文件,查看内容是否有Webshell特征
find ./ type f -name "*.jsp" | xargs grep "exec("
find ./ type f -name "*.php" | xargs grep "eval("
find ./ type f -name "*.asp" | xargs grep "execute("
find ./ type f -name "*.aspx" | xargs grep "eval("

//对于免杀Webshell,可以查看是否使用编码
find ./ type f -name "*.php" | xargs grep "base64_decode"

哥斯拉病毒的特征

  1. @session_start(); - 开启一个会话。
  2. @set_time_limit(0); - 设置脚本执行时间为无限。
  3. @error_reporting(0); - 关闭所有错误报告。

D盾扫描Linux主机Webshell

1.右键“此电脑”->“映射网络驱动器”进行挂载

1
2
3
4
\\sshfs\root@192.168.1.120          //映射home目录
\\sshfs\root@192.168.1.120\/ //映射/根目录
\\sshfs.r\root@192.168.1.120 //映射/根目录
\\sshfs.r\root@192.168.1.120!1234 //映射/根目录(其他端口)

2.用net use命令将Linux根目录映射挂载到本地

1
2
3
4
5
6
7

net use //列出所有网络连接
net use Z: /del //删除本机映射的Z盘
net use * /del /y //删除所有映射和IPC$
net use Z: \\sshfs\root@192.168.1.120\/ //将对方根目录映射为Z盘
net use Z: \\sshfs.r\root@192.168.1.120 //将对方根目录映射为Z盘
net use Z: \\sshfs.r\root@192.168.1.120!1234 //将对方根目录映射为Z盘(其他端口)

玄机-第一章 应急响应- Linux入侵排查

1.web目录存在木马,请找到木马的密码提交

2.服务器疑似存在不死马,请找到不死马的密码提交

3.不死马是通过哪个文件生成的,请提交文件名

4.黑客留下了木马文件,请找出黑客的服务器ip提交

5.黑客留下了木马文件,请找出黑客服务器开启的监端口提交

连上靶机

image-20260423195639893

第一个问题是web目录,那直接看var里面的www,在那个文件夹里面看到很多php文件,把文件夹用net命令挂载到windows上

image-20260423204009737

然后用D盾去扫,可以看到有下面四个,但是第一个看不到应该是被隐藏起来了

在后面的1.php上可以看到一句话木马

image-20260423204022491

可以看到参数是 1 ,flag{1}

image-20260423204408382

在后面的index.php里面可以看见后半部分有恶意后门插入,密码是hello

为什么这个是不死马呢,因为每次访问这个php文件都会重新生成 .shell.php

image-20260423204648494

image-20260423204946930

黑客留下了木马文件也就是生成的.shell.php,一开始我是去日志文件里面找.shell.php,以为192.168.200.2就是黑客的ip,但是一直不对,这个ip只是一直访问网站

image-20260423213511648

应该要运行这个文件,然后会发现攻击者在 10.11.55.21 开了监听端口,等待连接

所以黑客的ip是10.11.55.21 端口是3333

image-20260423205912536

玄机-第一章 应急响应-Linux日志分析

1.有多少IP在爆破主机ssh的root帐号,如果有多个使用”,”分割

2.ssh爆破成功登陆的IP是多少,如果有多个使用”,”分割

3.爆破用户名字典是什么?如果有多个使用”,”分割

4.登陆成功的IP共爆破了多少次

5.黑客登陆主机后新建了一个后门用户,用户名是多少

cd到/var/log文件夹之后,ls可以发现目录下有auth.log和auth.log.1,ai说auth.log.1是旧日志文件,当前的日志文件是auth.log,然后cat一下,可以看见有这些在尝试登录root账户

flag{192.168.200.2,192.168.200.31,192.168.200.32}

image-20260411204820265

cat成功的部分

flag{192.168.200.2}

image-20260411205027549

爆破用户名字典,所以可以看登陆失败的记录

1
2
3
4
5
6
7
8
9
perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'
perl -e
执行代码
while($_=<>)
从每一行执行
/for(.*?) from/;
使用正则匹配,匹配for和from之间的项,即用户名
print "$1\n";
输出

flag{user,hello,root,test3,test2,test1}

image-20260411205700667

对日志排序去重

1
cat auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more

flag{4}

image-20260411205946619

flag{test2}

image-20260411210117363

玄机-第一章 应急响应-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.xxx

4.黑客免杀马完整路径 md5 flag{md5}

第一步先查找定位一些特殊的后缀文件,例如:.asp、.php、.jsp、.aspx

image-20260412201022887

在php后缀的文件中,找到一点东西,进行了异或加密之类的

这段代码的目的是接收通过 php://input 流发送的数据,对其进行编码,并根据会话变量中的内容执行特定的 PHP 代码。这通常用于隐藏恶意代码或后门,使得攻击者可以通过特定的请求触发执行。

image-20260412201103720

flag{027ccd04-5065-48b6-a32d-77c704a5e26d}

然后从这个php中可以看出是哥斯拉,github地址再md5加密

1
https://github.com/BeichenDream/Godzilla

flag{39392DE3218C333F794BEFEF07AC9257}

接下来找隐藏shell,用-la命令,可以找到.Mysqlli.php,不仅被隐藏了还有执行权限之类的

/var/www/html/include/Db/.Mysqli.php

image-20260412201728675

路径再MD5编码

flag{AEBAC0E58CD6C5FAD1695EE4D1AC1919}

webshell执行会在网站日志留下记录

error.log中可以看到,存在assert()的命令执行

image-20260412205731735

image-20260412221252889

所以路径是/var/www/html/wap/top.php

flag{EEFF2EABFD9B7A6D26FC1A53D3F7D1DE}

玄机-第一章 日志分析-apache日志分析

1、提交当天访问次数最多的IP,即黑客IP:

2、黑客使用的浏览器指纹是什么,提交指纹的md5:

3、查看包含index.php页面被访问的次数,提交次数:

4、查看黑客IP访问了多少次,提交次数:

5、查看2023年8月03日8时这一个小时内有多少IP访问,提交次数:

用xftp连接了靶机

image-20260412211652621

翻一下文件可以发现有用的日志

image-20260412212222222

ssh连接用命令来筛选一下

  • -E:使用扩展正则表达式
  • -o只输出匹配的部分(不输出整行)
  • ^:匹配行首
  • \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:匹配 IP 地址格式
    • \d{1,3}:1-3位数字(0-255)
    • \.:转义的点号
1
cat access.log.1 | grep -Eo "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" | sort | uniq -c | sort -nr | more

image-20260412212535249

flag{192.168.200.2}

1
cat access.log.1 | grep 192.168.200.2 | awk -F'"' '{print $6}' access.log.1 | sort |uniq -c | sort -nr

用”来分割

User-Agent在第六个字段

image-20260412215546593

image-20260412212725959

所以flag{2d6330f380f44ac20f3a02eed0958f66}

1
cat access.log.1 |grep -o "/index.php"|uniq -c

image-20260412213305601

flag{27}

第一个命令统计过是6555

flag{6555}

1
grep "03/Aug/2023:08:" access.log.1 | awk '{print $1}' | sort |uniq

image-20260412213503879

flag{5}