- 0x00 前言:
- 0x01 应急自动化工具:
- GScan:
- 河马:
- chkrootkit:
- 在线沙箱:
- 0x02 排查可能被替换的文件:
- 0x03 可疑用户排查:
- 0x04 定时任务排查:
- 0x05 进程排查:
- 0x06 查看网络连接:
- 0x07 历史命令排查:
- 0x08 登录日志排查:
- 0x09 SSH异常密钥排查:
- 0x0A 启动服务排查:
- 0x0B 寻找特定时间的文件
- 0x0C 流量提取:
- 0x0D 内存dump数据:
- 0x0E 服务器威胁排查技巧:
- 挖矿病毒特征:
- 木马后门特征:
- WebShell(网页木马)特征:
- 一些分析技巧:
- Linux分析的一些有用命令:
- grep:
- strings:
- file:
- lsattr:
- chattr:
- ls:
- 0x0F 病毒/木马清除:
- 进程关闭:
- 定时任务清理:
- 恶意程序文件清理:
- 0x10 附录:
- /proc/目录介绍:
- log日志目录介绍:
为了方便对Linux做入侵排查,特做该辅助笔记,以便于应急时不在过度依赖搜索引擎。
当然也离不开搜索引擎,只是减少对搜索引擎的依赖
# 减少排查使用的命令写入.bash_history(只影响当前打开的终端命令) HISTFILE=/dev/null0x01 应急自动化工具: GScan:
GScan 是一款开源的 Linux 应急响应工具,该工具旨在为安全应急响应人员对Linux主机排查时提供便利,实现主机侧Checklist的自动全面化检测,根据检测结果自动数据聚合,进行黑客攻击路径溯源。
下载地址:https://github.com/grayddq/GScan
工具可检查项:
1、主机信息获取 2、系统初始化alias检查 3、文件类安全扫描 3.1、系统重要文件完整行扫描 3.2、系统可执行文件安全扫描 3.3、临时目录文件安全扫描 3.4、用户目录文件扫描 3.5、可疑隐藏文件扫描 4、各用户历史操作类 4.1、境外ip操作类 4.2、反弹shell类 5、进程类安全检测 5.1、CUP和内存使用异常进程排查 5.2、隐藏进程安全扫描 5.3、反弹shell类进程扫描 5.4、恶意进程信息安全扫描 5.5、进程对应可执行文件安全扫描 6、网络类安全检测 6.1、境外IP链接扫描 6.3、恶意特征链接扫描 6.4、网卡混杂模式检测 7、后门类检测 7.1、LD_PRELOAD后门检测 7.2、LD_AOUT_PRELOAD后门检测 7.3、LD_ELF_PRELOAD后门检测 7.4、LD_LIBRARY_PATH后门检测 7.5、ld.so.preload后门检测 7.6、PROMPT_COMMAND后门检测 7.7、Cron后门检测 7.8、Alias后门 7.9、SSH 后门检测 7.10、SSH wrapper 后门检测 7.11、inetd.conf 后门检测 7.12、xinetd.conf 后门检测 7.13、setUID 后门检测 7.14、8种系统启动项后门检测 8、账户类安全排查 8.1、root权限账户检测 8.2、空口令账户检测 8.3、sudoers文件用户权限检测 8.4、查看各账户下登录公钥 8.5、账户密码文件权限检测 9、日志类安全分析 9.1、secure登陆日志 9.2、wtmp登陆日志 9.3、utmp登陆日志 9.4、lastlog登陆日志 10、安全配置类分析 10.1、DNS配置检测 10.2、Iptables防火墙配置检测 10.3、hosts配置检测 11、Rootkit分析 11.1、检查已知rootkit文件类特征 11.2、检查已知rootkit LKM类特征 11.3、检查已知恶意软件类特征检测 12.WebShell类文件扫描 12.1、WebShell类文件扫描
使用方法:
# 需要Python3.x环境 # 直接运行即可 python3 GScan.py河马:
WebShell查杀工具。
下载地址:https://www.shellpub.com/
前往官方下载对于操作系统版本的,然后使用tar解压
解压后会有两个文件:
- hm:主程序
- cache.db:数据
最好创建一个新目录,将这两个文件移动到新目录中
使用方法:
# 一般扫描 ./hm scan 目录地址 # 扫描aaaa目录 ./hm scan aaaa/ # 深度扫描 ./hm deepscan 目录地址
发现存在webshell后,会在应用目录创建一个result.csv文件,里面记录扫描出来的webshell文件地址。
chkrootkit:Rootkit检查工具。
Rootkit 是一种系统内核级病毒木马,其进入内核模块后能获取到操作系统高级权限,从而使用各种底层技术隐藏和保护自身,绕开安全软件的检测和查杀。
下载地址:http://www.chkrootkit.org/download/
使用方法:
# 下载 wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz # 解压 tar -zxvf chkrootkit.tar.gz cd chkrootkit # 执行 ## INFECTED代表感染,该工具默认检查整个系统 ./chkrootkit | grep INFECTED
在线沙箱:PS:对发现存在感染的文件,可以放入在线沙箱或引擎中进行二次确认,或者进行逆向分析。
在线沙箱或引擎(杀毒引擎)可以帮助协助分析可疑文件:
- 微步:https://x.threatbook.cn/
- virustotal:https://www.virustotal.com/
- 奇安信在线沙箱:https://ti.qianxin.com/
由于木马为了隐蔽性,可能会将系统原本的ls、ps等命令文件进行替换,由于这类文件一般在200K左右,如果这类文件被串改或替换,那么大小应该会达到接近M:(注意:bash|sh这类命令文件大小可能在1-2M徘徊)
# 排查bin目录 ls -lh /bin/ # 如果bin目录文件较多,可排查大于M的文件 ls -lh /bin/ | grep M # 或者排查几个特定文件,ls|ps|netstat|vim|ping|cd|pwd ls -lh /bin/ | grep -E "ls|ps|netstat|vim|ping|cd|pwd|ifconfig|rm|cp|env|cat|more|find" # 如果系统有rpm命令,可使用该命令查看是否存在被替换的文件 rpm -Va # rpm效验出现不同才会输出,输出为8个字符,如:S.......
rpm效验8个字符说明:
- S:文件大小是否改变
- M:文件类型或文件权限是否改变
- 5:文件效验MD5是否被改变(可判断文件是否被篡改)
- D:设备中,从代码是否被改变
- L:文件路径是否改变
- U:文件所拥有者是否被改变
- G:文件所属组是否被改变
- T:文件的修改时间是否被改变
0x03 可疑用户排查:用GScan可能更快更方便
由于攻击者入侵服务后想稳定或长久控制,可能会创建一个新用户:
# 查看有效的用户 cat /etc/passwd | grep -E "bin/.*sh$"0x04 定时任务排查:
由于病毒/木马为确保本身程序的正常或稳定运行,一般会创建定时任务进行检查或启动:
# 检查当前用户的定时任务 crontab -l # 查看特定用户定时任务 crontab -l -u username # 列出有效用户 cat /etc/passwd | grep -E "bin/.*sh$" | cut -f 1 -d: # 定时任务的其余文件 /var/spool/cron木马后门特征:
- 特征一:进程中存在形如nc -e、bash -i、python -c "import socket"、php -r exec、exec bin/bash|sh等;
- 特征二:一般后门木马都是采用反向连接,故本机IP地址端口在变动,而远控端端口不变,形如:172.17.17.17:56002 -> 123.123.123.123:12345
- 特征三:文件名称,形如msf、door、一个数字形式(如1)、随机名称
- 特征四:进程的文件位置,如tmp、点开头的文件(如.c2)、三个点的目录(如...)
WebShell(网页木马)特征:PS:linux中点开头的文件为隐藏文件,查看需要使用ls -a
- 特征一:文件命名规则:如但一个数字(如1.php)、一个字母、带有door、
- 特征二:文件中存在执行命令或者代码的方法,且该方法接收用户传入的参数
- PHP:eval、call_user_func、system、assert等
- JSP/X:Runtime.getRuntime().exec()
- ASP/X:Eval、Execute、ExecuteGlobal
- 特征三:有些Webshell为了躲避静态查杀,会将恶意代码进行加密混淆,一般采用的base64,如果发现一个文件存在很密集的乱码,然后又用变量进行拼接,那么该文件极有可能是一个webshell,形如:
一些分析技巧:
一般触发应急可能是安全设备告警,针对这类分析,可先查看安全设备告警的信息,然后更具告警内容进行写入,如果告警提示是后门/木马,如果是Webshell就可以定位到文件,如果不是,那么可通过查看告警里面的目的端口信息,查看于目的端口连接的进程,然后在排查进程,锁定文件,将文件提取进行逆向分析或在线沙箱扫描,当发现该文件属于恶意文件后,就排查服务器中的定时任务、历史命令、可疑shell脚本等;
如果设备告警只能知道所属服务器,并没有详细信息,那么可先通过查看进程,在到网络连接、定时任务、历史命令等上述方法进行排查。
在检查进程或者网络连接中,可疑将上面的方法灵活运用起来,比如利用netstat查看到了本地的12345端口比较可疑,那么这时可使用lsof查看该端口的进程,然后在利用ps查看该进行的具体数据,查看了后,也可查看/proc/进程id/exe的ls信息,锁定恶意文件,也可查看定时任务锁定,方法很多,需要将上述的方式灵活组合起来。
查找文件中符合条件的字符串,常使用参数:
-E 正则匹配 -v 不显示匹配到规则的内容 -i 不区分大小写 -r 递归寻找某目录下某字符串 # 查看www目录下是否存在exec关键词 grep -r "exec" /www/strings:
获取一个对象或二进制文件中的字符串,可用于搜索一个可执行文件中是否存在某字符串关键词:
# 获取cc文件的所有可显示字符串 strings cc # 搜索cc文件中是否存在miner关键词 strings cc | grep minerfile:
识别文件类型:
file xxxlsattr:
显示文件属性:
lsattr xxxchattr:
修改文件属性:
# 常用三个属性 a:让文件或目录仅供附加用途 s:保密性删除文件或目录 i:不得任意更动文件或目录 # 使用方式+代表增加,-代表减去 # 如对xxx文件减少i属性 chattr -i xxxls:
显示目录结构:
-l 显示文件描述 -a 显示隐藏文件 -h 切换文件显示的大小单位,有K、M、G -t 将文件依建立时间之先后次序列出 ## 显示etc目录下所有文件信息(包含隐藏文件) ls -la /etc/0x0F 病毒/木马清除: 进程关闭:
kill -9 pid定时任务清理:
# 进入编辑模式进行删除 crontab -e # 编辑模式为vi/vim恶意程序文件清理:
rm -rf 恶意文件路径 # 如果删除不了,可使用lsattr查看下文件属性,然后使用chattr减去这些属性即可删除0x10 附录: /proc/目录介绍:
https://www.cnblogs.com/klvchen/p/12132530.html
| 档名 | 文件内容 |
|---|---|
| /proc/cmdline | 加载 kernel 时所下达的相关参数!查阅此文件,可了解系统是如何启动的! |
| /proc/cpuinfo | 本机的 CPU 的相关资讯,包含时脉、类型与运算功能等 |
| /proc/devices | 这个文件记录了系统各个主要装置的主要装置代号,与 mknod 有关呢! |
| /proc/filesystems | 目前系统已经加载的文件系统罗! |
| /proc/interrupts | 目前系统上面的 IRQ 分配状态。 |
| /proc/ioports | 目前系统上面各个装置所配置的 I/O 位址。 |
| /proc/kcore | 内存的大小 |
| /proc/loadavg | top中uptime 的三个平均数值记录 |
| /proc/meminfo | 使用 free 列出的内存资讯 |
| /proc/modules | 目前我们的 Linux 已经加载的模块列表,也可以想成是驱动程序 |
| /proc/mounts | 系统已经挂载的数据,就是用 mount 这个命令呼叫出来的数据 |
| /proc/swaps | 到底系统挂加载的内存在哪里?使用掉的 partition 就记录在此 |
| /proc/partitions | 使用 fdisk -l 会出现目前所有的 partition 吧?在这个文件当中也有纪录 |
| /proc/pci | 在 PCI 汇流排上面,每个装置的详细情况!可用 lspci 来查阅 |
| /proc/uptime | 就是用 uptime 的时候,会出现的资讯 |
| /proc/version | 核心的版本,就是用 uname -a 显示的内容 |
| /proc/bus/* | 一些汇流排的装置,还有 U盘的装置也记录在此 |
| /proc/syscall | 显示当前进程正在执行的系统调用 |
| 日志文件 | 说明 |
|---|---|
| /var/log/cron | 记录了系统定时任务相关的日志 |
| /var/log/cups | 记录打印信息的日志 |
| /var/log/dmesg | 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息 |
| /var/log/mailog | 记录邮件信息 |
| /var/log/message | 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息, |
| 如果系统出现 问题时,首先要检查的就应该是这个日志文件 | |
| /var/log/btmp | 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看 |
| /var/log/lastlog | 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用 lastlog命令查看 |
| /var/log/wtmp | 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是 一个二进制文件,不能直接vi,而需要使用last命令来查看 |
| /var/log/utmp | 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户 的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询 |
| /var/log/secure* | |
| /var/log/auth* | 录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户, sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中 |



