今日份鸡汤缺失………

引言

应急响应篇——Linux应急响应

敏感文件分析

一般的敏感目录,像tmp/还有一些可执行程序的目录,一般都在/usr/bin或者/usr/sbin等….

参数说明:

-a 显示所有目录
-l 以长格式显示目录下的内容列表
-t 用文件和目录的更改时间排序

然后进一步在tmp目录中查找最新添加的可疑文件

额,最近玩内网kali用做攻击机,所以tmp目录的东西是多了点。比如这个ew,2333

另,Linux开机启动项是/etc/init.d,一般为插入恶意代码的位置。

进入启动项目录进行筛选

ls -alh | head -n 10


然后使用stat对文件的创建、修改、访问时间进行详细的查看,如果修改时间距离日期接近,可进一步排查。

针对新建的文件

# 找出24小时内被修改的文件
find ./ -mtime 0 -name "*.php"
# 找出72小时内被修改的文件
find ./ -ctime -2 -name "*.php"


查找最近新建的php文件中,具有最高权限的文件。

find ./ -iname "*.php" -perm 777

网络连接

使用netstat对网络连接进行查看处于tcp网络套接字相关信息。

netstat -pantl


使用ip a查看网络信息

如果发现了可疑进程,则使用kill -9 [pid]给杀掉进程。

进程分析

使用命令ps,分析进程,可以根据netstat定位到pid,使用ps命令分析进程

ps aux


查看最近使用了22端口的进程。

ps aux | grep "22"


使用pid进行筛选

ps aux | grep [pid]

查看端口为22的隐藏进程

lsof -i:22

异常登录分析

last命令记录着所有用户登录系统的日志,可以用来查找非授权用户的登录事件,而last命令的输出结果来源于/var/log/wtmp文件,入侵者一般会删除该文件

查看登录日志,筛选非本地登录

last -i | grep -h 0.0.0.0


还有一些常见的命令

who     查看当前登录用户(tty为本地登录,pts为远程登录)
w       查看某一时刻用户的行为
uptime  查看有多少用户,以此确定是否存在异常用户
lastb   显示登录失败次数,判断是存在ssh爆破
last    显示用户最近登录信息。
lastlog 登录成功记录

异常用户分析排查

root用户是权限最高的一个用户,同时它也代表着最高权限。
新建用户和密码

useradd username
passwd username


其中root用户的uid和gid都是0,修改一下新建的用户。直接编辑passwd文件。

vim /etc/passwd


testuidgid都改为0

Linux所有用户都会在/etc/passwd、/etc/shadow、/etc/group文件中记录

cat /etc/passwd :查看是否有其他uid,gid为0的情况

less /etc/passwd:查看是否有新增用户

grep :0 /etc/passwd:查看是否有特权用户

ls -l /etc/passwd:查看passwd最后修改时间

awk -F: 'length($2)==0 {print $1}' /etc/shadow:查看是否存在空口令用户

历史命令分析

在Linux系统中,默认记录之前执行的命令。且存储在/root/bash_history文件中。
查看方式cat /root/bash_history或者history命令查看。
需要特别注意查看的是wget可远程下载、ssh可以远程连接主机、tar/zip等数据打包类命令,系统配置命令等

结合grep命令查找一些关键词,并进行详细筛选分析。

Linux计划任务排查

这就跟Windows系统中的定时任务排查差不多,就是查看有没有开机自启或者定时启动的高权限的服务,或者有无绑定木马。
这里使用crontab来设置计划任务。
具体看下使用方法就可以了,计划任务就不细说了。

开机自启项

使用/etc/init.d查看开机自启项目录

查看自启项有无异常。

$path变量异常

决定了shell将到那些目录中寻找命令或程序,PATH的值是一系列目录,当你运行一个程序时,LINux在这些目录下仅需搜寻编译连接
环境变量的意思。

修改PATH export PATH=$PATH:/usr/locar/new/bin 本地终端中有效,重启后无效。在/etc/profile或/home/.bashrc(source~/.bashrc)才能永久生效。

后门排查

Rkhunter具有如下功能:
1.系统命令检测、MD5校验
2.Rookit检测
3.本机敏感目录、系统配置异常检测

apt install rkhunter

使用方法暂无。mark一下~

其他(转载)

1.日志如果被软链接到/dev/null
1.删除log
2.重启rsyslog

2 如果文件/目录无法删除,可使用lsattr查看文件/目录属性,如果有-i属性可使用chattr -i去除

3 查找777的权限的文件:find / \*.php -perm 777,因为大部分黑客普遍喜欢直接赋于文件/目录777的权限

4 搜集SSH爆破字典:grep "Failed password" /var/log/secure | awk {'print $9'} | sor0t | uniq -c | sort -nr

5 查看恶意文件里面的IP:strings /usr/bin/.sshd | egrep '[1-9]{1,3}\.[1-9]{1,3}\.'

6 根据特征删除指定进程:ps aux|grep -v grep|grep "mysqlc"|awk '{print $2}'|xargs kill -9

7 获取进程id数组,并循环杀死所有进程

ps -ef|grep "java" | grep -v grep|awk '{print $2}'
kill -9 `ps -ef|grep "java" | grep -v grep|awk '{print $2}'`
for pid in $(ps -ef|grep "java" | grep -v grep|awk '{print $2}'); do
  echo $pid
  kill -9 $pid
done

8 隐藏进程查找:
进程都存在于内存中,而内存中的数据又都是写入到/proc/目录下,基于此可查找隐藏文件

ps -ef | awk '{print}' | sort -n | uniq >1
ls /proc | sort -n |uniq >2
diff 1 2

另外,针对挖矿命令被劫持的情况下可以使用perf top -s pid,comm,dso,symbol来看到挖矿进程

9 SEO文件搜索:grep -ri baiduspider web_root_master

10 netstat被替换,可使用sslsof来替换

11 arp -a:查看arp记录是否正常

12 关注Content-Length值:awk '{if($10>5000000){print $0}}' /var/log/httpd/access_log

13 查看动态库是否被修改

echo $LD_PRELOAD
busybox cat /etc/ld.so.preload

也可使用stracelddreadefl等命令

14 利用iptables阻断通讯

iptables -A INPUT -s xmr.crypto-pool.fr -j DROP
iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP

15 文件监控
创建文件监控规则

auditctl -w /etc/passwd -p war -k password_monitor

监听日志

tail -f /var/log/audit/audit.log|grep password_monitor

16 网页挖矿多数都是加载conhive.min.js,script标签里有miner.start关键字,全局查找即可

17 检查SSH后门

  • 对比ssh版本:ssh -V
  • 查看ssh配置文件和/usr/sbin/sshd的时间:stat /usr/sbin/sshd
  • strings检查/usr/sbin/sshd,看是否有邮箱、IP等信息:strings /usr/bin/.sshd | egrep '[1-9]{1,3}.[1-9]{1,3}.'
  • 通过strace监控sshd进程读写文件的操作,一般的sshd后门都会将账户密码记录到文件,可以通过strace进程跟踪到ssh登录密码文件。

18 清除僵尸进程
父进程调用fork创建子进程后,子进程运行直至其终止,它立即从内存中移除,但进程描述符仍然保留在内存中。

ps -e -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9

Reference

应急响应入门篇-Linux分析排查技术(上)
应急响应入门篇-Linux分析排查技术(上)