主页 > 网络知识 > 渗透痕迹分析随笔

渗透痕迹分析随笔

网上,关于入侵痕迹分析的文章很多,在此将个人工作中常用的一些方法技巧(班门弄斧了),以及爬过的坑总结如下(当然,其中有些方法也是从各位前辈的经验中学习的)。入侵痕迹分析,不外乎正向推理,和逆向推理。当已经掌握部分线索时,可通过逆向推理,快速确定事发时间、影响范围、事发原因等;当没有明确的线索,可以入侵者的视角,通过正向思维进行推理,从而发现入侵行为;两种方法都可以以敏感文件、敏感命令、敏感IP、攻击特征关键字为线索,推理出事发时间、事发原因。

 一、针对.bash_history的分析

在对日志进行例行安全分析时,对文件.bash_history的分析必不可少,该文件记录了命令执行历史记录,通过该文件,可以分析入侵者执行了哪些恶意操作(反弹shell、提权、信息收集、修改文件隐藏后门、添加后门账号、挖矿木马特喜欢的添加计划任务、以当前shell为跳板进行横向渗透、删除日志文件)。

入侵者获得的命令shell是哑shell时,为了提高交互性,可能会执行以下python语句反弹一个交互shell

python -c 'import pty; pty.spawn("/bin/bash")'

入侵者获得反弹shell后,可能会执行相关的提权命令,比如尝试suid提权时,可能会通过find命令,查找设置了SUID位的可执行文件,或者尝试sudo提权时,先检查当前账号是否具有sudo权限

find / -perm -u=s -type f 2>/dev/null sudo -i 或者 sudo -l

入侵者提权后,可能会通过cat、more等命令查看配置文件,收集各种敏感信息,通过useradd或者adduser命令添加后门账号;但是这几个命令也是运维人员常用的命令,因此要配合命令执行的时间来进一步分析,而.bash_history文件中记录的时间是以unix时间戳形式记录,可以直接转换;或者直接修改passwd添加账号,因此当passwd和shadow这两个文件发生修改时,需要重点关注。

挖矿木马特喜欢添加计划任务,每次碰到挖矿木马,通过计划任务排查,一查一个准,添加计划任务的命令如下:

crontab -e

入侵者为了干扰排查,可能会修改后门文件的时间,比如通过如下命令:

touch -d 或者 touch -t

横向渗透方面,可能关闭iptables、进行端口扫描、搭建各种隧道等命令,比如使用nc或者nmap:

nc -z -v ip port 使用系统自带的nc进行端口扫描 ssh -CfNg 搭建ssh隧道 ew -s 使用ew搭建隧道 service iptables stop 关闭iptables

当然很多入侵者干脆通过命令清空命令历史记录,或者直接将整个.bash_history文件删除,但最后一条清除历史记录的命令或者删除文件的命令会保留下来

history -c rm .bash_history

上面针对.bash_history文件,进行安全分析时,列举了一些个人认为比较敏感的特征,总之对.bash_history进行安全审计时,要对敏感命令、敏感工具持有敏锐的嗅觉

部分人员日常工作中,因执行的终端命令太多,通过上下方向键查找历史命令,不方便,于是习惯性的使用history -c清除,其实这对溯源工作带来了很大的阻力,因此不建议使用history -c清除。

二、日志分析 1、系统日志

入侵痕迹分析,肯定少不了各种日志的分析。secure记录的是包括登录相关的安全日志,cron记录的计划任务日志。安全日志和计划任务日志文件名可能后面会接日期(日志归档原因),因此为防遗漏,可以使用如下命令进行搜索

ls /var/log/cron* ls /var/log/secure*

当尝试ssh暴力破解溯源时,可用如下命令,指定用户,对IP进行快速排查;lastb命令能列出登录失败的记录,整条命令的作用就是找出对root用户进行暴力破解的ip,并以次数从大到小输出

lastb root | awk'{print $3}' | sort |uniq -c |sort -rn |more

筛选出可疑IP后,可以通过secure日志,验证是否有被爆破成功,如果定位了IP,事发时间也相应的能定位,接下来就可根据IP和时间,对相关日志进行溯源分析

cat /var/log/secure* | grep Accepted | grep ip 2、数据库日志        

有时候找不知道日志文件的存放目录,可以通过查看配置文件(如mysql的配置文件文件my.inf,tomcat的配置文件tomcat-user.xml)。mysql数据库日志分析时,账号暴力破解这种,可以参考ssh爆破的思路进行排查。当mysql版本是5.6以上时,可以尝试看下是否有执行过如下sql命令,

set global general_log = on 开启日志记录(当outfiledumpfile无法导出shell时,可配合日志文件getshell) set global general_log_file = '' 设置日志文件保存路径(通常保存到web目录)

有时候通过mysql进行udf提权,可直接通过sql语句查看,添加了什么函数

select * from mysql.func
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!