- 【玄机】日志分析-apache日志分析
- 1、提交当天访问次数最多的IP,即黑客IP:
- /var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。这个命令能找到一个IP,也就是黑客IP
- 但是这题的目的是找日志,我开始到/var/log上没找到有用的日志文件,最后才找到/var/log/apache2目录上找到了access.log.1这个日志,直接查看就能看出哪个ip访问次数最多了或者用 cut -d ' ' -f 1 access.log.1|uniq -c | sort -rn | head -20能明显的看出IP出现次数
- 2、黑客使用的浏览器指纹是什么,提交指纹的md5:
- 在access.log.1上能清晰看出使用的浏览器指纹也可以用命令cat access.log.1 |grep 192.168.200.2 |more查看
- 得到浏览器指纹后到MD5在线加密/解密/破解—MD5在线进行加密得到一串编码,用flag{}提交
- 3、查看index.php页面被访问的次数,提交次数:
- 查看index.php页面被访问次数用grep -c "/index.php" access.log.1命令查看
- -c 选项告诉 grep 只输出匹配行的数量,而不是匹配的行本身。这对于统计匹配次数非常有用
- 得到flag
- 4、查看黑客IP访问了多少次,提交次数:
- 对日志进行筛查
- grep -w"192.168.200.2"access.log.1 lwc -l
- grep "192.168.200.2"access.log.1lwc -l
- 第一个加w是只匹配整个单词,即IP出现必须是独立的,得到数字后以flag{}提交
- 5、查看2023年8月03日8时这一个小时内有多少IP访问,提交次数:
- 在Apache访问日志中,时间通常以特定格式记录,通常是这样的格式:[dd/Mon/yyyy:HH:mm:ss Z]
- 如果你需要对日志文件中的特定时间进行查询,你需要构造一个与日志格式匹配的时间字符串,并将其用于 grep 或其他过滤命令。
- cat access.log.1 | grep "03/Aug/2023:08:" | awk '{print $1}' | sort -nr | uniq -c | wc -l
- 这条命令的功能是统计在 03/Aug/2023:08: 时间段内访问 access.log.1 文件的不同IP地址的数量。
- grep "03/Aug/2023:08:" access.log.1 | awk '{print $1}' | sort | uniq | wc -l
- 这条命令的功能是统计在 03/Aug/2023:08: 时间段内访问 access.log.1 文件的独立IP地址的数量
- 两条命令都是从文件中筛选出特定时间段的访问记录,并统计独立IP地址的数量或次数
- 1、提交当天访问次数最多的IP,即黑客IP:
- 【玄机】应急响应-Linux日志分析
- 1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割
- linux默认日志放在/var/log目录下,比较重要的几个文件:登录错误信息(btmp),登录成功(wtmp),最后一次登录(lastlog),登录日志(secure)
- 除此之外,auth.log.1 文件是一个非常重要的系统日志文件,包含了许多与安全相关的信息,可以用于监控、分析和排查系统故障和安全问题所以可以通过查看它来确定相关信息。
- cat /var/log/auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more
- cat /var/log/auth.log.1 显示文件内容。
- grep -a "Failed password for root" 在文件中搜索所有包含 "Failed password for root" 的行。
- awk '{print $11}' 提取每行的第 11 个字段,即 IP 地址。
- sort 对提取出来的 IP 地址进行排序。
- uniq -c 统计每个 IP 地址出现的次数,并将其前缀显示到每行的开头。
- sort -nr 对 IP 地址出现次数进行逆序排序。
- more 分屏显示结果,便于查看。
- 得到3个IP,以flag{}形式提交
- 2.ssh爆破成功登陆的IP是多少,如果有多个使用","分割
- cat /var/log/auth.log.1 | grep "Accepted password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more
- 该命令将会列出所有包含 “Accepted password for root” 的行,并按照每个 IP 地址出现的次数从高到低进行排序。它可以帮助管理员快速发现和分析与 root 密码验证相关的安全问题。需要注意的是,这个命令只显示密码验证成功的记录,如果要查找所有的登录记录,应该使用类似 “session opened” 的关键字。
- 实际使用什么都没出来,于是我把三个IP都提交了一边,得到成功登录的 IP为192.168.200.2
- 3.爆破用户名字典是什么?如果有多个使用","分割
- cat /var/log/auth.log.1 | grep -a "Failed password" | perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'| uniq -c | sort -nr
- cat /var/log/auth.log.1 显示文件内容。
- grep -a "Failed password" 在文件中搜索所有包含 "Failed password" 的行。
- perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";} ' 使用 Perl 正则表达式从每行日志中提取出 "for xxx from" 部分的字符串,即远程主机的 IP 地址。
- uniq -c 统计每个 IP 地址出现的次数,并将其前缀显示到每行的开头。
- sort -nr 对 IP 地址出现次数进行逆序排序。
- 逐步解释perl命令,perl -e 'while($_=<>){ /for(.?) from/; print “$1\n”;}': 这一部分使用 Perl 脚本。-e 选项表示在命令行中提供脚本代码。Perl 脚本的作用是遍历每一行,然后使用正则表达式 /for(.?) from/ 捕获括号中的内容,即登录失败的用户名。捕获的内容由 $1 引用,然后通过 print “$1\n”; 打印出来,每个用户名占一行。
- 得到flag{user,hello,root,test3,test2,test1}
- 4.登陆成功的IP共爆破了多少次
- 第一题能看出来登录成功的IP登录了4次
- 也可以用last直接数192.168.200.2出现的次数
- 5.黑客登陆主机后新建了一个后门用户,用户名是多少
- cat /var/log/auth.log.1 |grep -a "new user"
- 该命令将会列出所有包含 “new user” 的日志记录,这些记录通常是由系统管理员或其他特权用户创建新用户账户时生成的。通过查看这些日志记录,管理员可以了解到新用户账户的创建时间、用户名、UID 等相关信息,并及时发现任何未经授权的用户账户创建操作
- flag{test2}
- 或者直接cat /etc/passwd一样能看到
- 1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割
- 【玄机】应急响应—Linux入侵排查
- 1.web目录存在木马,请找到木马的密码提交
- 直接进www目录下看php文件,第一个1.php里面就是黑客注入的木马
- 或者用find / -name "*.php" | xargs grep "eval" -ls
- 能找到3个关于php的文件
- 2.服务器疑似存在不死马,请找到不死马的密码提交
- 一个个看www下文件,在index.php上发现生成.shell.php的木马
- 在文件上发现一串编码,拿去MD5解码得到不死码的密码
- 3.不死马是通过哪个文件生成的,请提交文件名
- 显然index上有生成.shell.php的代码,index文件名就是flag了
- 4.黑客留下了木马文件,请找出黑客的服务器ip提交
- 黑客留下的木马文件就是shell.php(1).elf
- 要找到黑客服务器的ip,直接运行这个木马看连接情况
- chomod 777 shell\(1\).elf \\加斜杠是为了转义括号,不然命令会报错
- ./shell\(1\).elf
- 然后监听netstat -anp
- 看到连接木马的IP
- 5.黑客留下了木马文件,请找出黑客服务器开启的监端口提交
- 在监听端口能直接看到黑客IP下开放端口3333
- 1.web目录存在木马,请找到木马的密码提交
- 【玄机】第二章日志分析-mysql应急响应
- 1.黑客第一次写入的shell flag{关键字符串}
- 问hacker第一次写入的shell,于是就去www/html目录下文件上看看
- 找到一个sh.php打开就看到了一个简单的一句话木马
- 或者find ./ -name "*.php" | xargs grep "@eval("或者用查杀工具直接扫
- 2.黑客反弹shell的ip flag{ip}
- 查看mysql的日志,在var/log/mysql下
- 看到一个error.log文件,查看之后发现一条很奇怪的信息,在/tmp/目录下上传了一个1.sh文件,后面则是这个文件引发的一系列错误信息
- 直接去tmp目录下找1.sh文件打开看,的带hacker的反弹shell的IP
- 或者全局查找这个文件名find / -name "1.sh"查找到文件路径得到IP
- 3.黑客提权文件的完整路径 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx
- 提权我直接猜测为udf提权了,最常用的提权方式
- UDF 是什么
- UDF(Userdefined function)可翻译为用户自定义函数,其为 mysql 的一个拓展接口,可以为 mysql 增添一些函数。比如 mysql 一些函数没有,我就使用 UDF 加入一些函数进去,那么我就可以在 mysql 中使用这个函数了。
- 条件:
- 获取了MySQL控制权:获取到账号密码,并且可以远程连接
- 获取到的账户具有写入权限,即secure_file_priv值为空
- 什么情况下需使用mysql提权?
- 拿到了mysql的权限,但是没拿到mysql所在服务器的任何权限,通过mysql提权,将mysql权限提升到操作系统权限
- 既然要提权,那黑客肯定知晓了账号密码,而且连接上了,那么我们可以猜想,是不是web目录下有页面泄露了mysql账号密码,回到web目录
- find ./ -name "*.php" | xargs grep "root"
- 连接一下数据库
- show global variables like '%secure%';查到secure_file_priv字段为空,具有写入权限,一般进行了提权,一定会在 /usr/lib/mysql /plugin/ 目录下留下痕迹,来到该目录,出现了一个udf.so文件,肯定有人写入了一个自定义函数到库中,加密路径得到flag
- 4.黑客获取的权限 flag{whoami后的值}
- 既然hacker进行了提权,在库中写入了自定义函数,我们去数据库中查询一下
- select * from mysql_func;
- 这个表会查询到新增函数
- 使用新增的这个函数执行系统命令
- select sys_eval('whoami');
- 得到flag{mysql}
- 1.黑客第一次写入的shell flag{关键字符串}