前言
前面总结几篇应急时经常执行的操作,今天推荐一个自动化的应急响应脚本:GScan。
本程序旨在为安全应急响应人员对Linux主机排查时提供便利,实现主机侧Checklist的自动全面化检测,根据检测结果自动数据聚合,进行黑客攻击路径溯源。
CheckList检测项
自动化程序的CheckList项如下:
11、主机信息获取 22、系统初始化alias检查 33、文件类安全扫描 4 3.1、系统重要文件完整行扫描 5 3.2、系统可执行文件安全扫描 6 3.3、临时目录文件安全扫描 7 3.4、用户目录文件扫描 8 3.5、可疑隐藏文件扫描 94、各用户历史操作类 10 4.1、境外ip操作类 11 4.2、反弹shell类 125、进程类安全检测 13 5.1、CUP和内存使用异常进程排查 14 5.2、隐藏进程安全扫描 15 5.3、反弹shell类进程扫描 16 5.4、恶意进程信息安全扫描 17 5.5、进程对应可执行文件安全扫描 186、网络类安全检测 19 6.1、境外IP链接扫描 20 6.3、恶意特征链接扫描 21 6.4、网卡混杂模式检测 227、后门类检测 23 7.1、LD_PRELOAD后门检测 24 7.2、LD_AOUT_PRELOAD后门检测 25 7.3、LD_ELF_PRELOAD后门检测 26 7.4、LD_LIBRARY_PATH后门检测 27 7.5、ld.so.preload后门检测 28 7.6、PROMPT_COMMAND后门检测 29 7.7、Cron后门检测 30 7.8、Alias后门 31 7.9、SSH 后门检测 32 7.10、SSH wrapper 后门检测 33 7.11、inetd.conf 后门检测 34 7.12、xinetd.conf 后门检测 35 7.13、setUID 后门检测 36 7.14、8种系统启动项后门检测 378、账户类安全排查 38 8.1、root权限账户检测 39 8.2、空口令账户检测 40 8.3、sudoers文件用户权限检测 41 8.4、查看各账户下登录公钥 42 8.5、账户密码文件权限检测 439、日志类安全分析 44 9.1、secure登陆日志 45 9.2、wtmp登陆日志 46 9.3、utmp登陆日志 47 9.4、lastlog登陆日志 4810、安全配置类分析 49 10.1、DNS配置检测 50 10.2、Iptables防火墙配置检测 51 10.3、hosts配置检测 5211、Rootkit分析 53 11.1、检查已知rootkit文件类特征 54 11.2、检查已知rootkit LKM类特征 55 11.3、检查已知恶意软件类特征检测 5612.WebShell类文件扫描 57 12.1、WebShell类文件扫描
使用方式
1sh-3.2# python GScan.py -h 2 3 4 _______ _______. ______ ___ .__ __. 5 / _____| / | / | / \ | \ | | {version:v0.1} 6| | __ | (----`| ,----' / ^ \ | \| | 7| | |_ | \ \ | | / /_\ \ | . ` | {author:咚咚呛} 8| |__| | .----) | | `----. / _____ \ | |\ | 9 \______| |_______/ \______|/__/ \__\ |__| \__| http://grayddq.top 10 11 12Usage: GScan.py [options] 13 14Options: 15 16 -h, --help show this help message and exit 17 --version 当前程序版本 18 19 Mode: 20 GScan running mode options 21 22 --overseas 境外模式,此参数将不进行境外ip的匹配 23 --full 完全模式,此参数将启用完全扫描 24 --debug 调试模式,进行程序的调试数据输出 25 --dif 差异模式,比对上一次的结果,输出差异结果信息。--sug 排查建议,用于对异常点的手工排查建议 26 --pro 处理方案,根据异常风险生成初步的处理方案 27 28 Optimization: 29 Optimization options 30 31 --time=TIME 搜索指定时间内主机改动过的所有文件,demo: --time='2019-05-07 32 00:00:00~2019-05-07 23:00:00' 33 --job 添加定时任务,用于定时执行程序 34 --log 打包当前系统的所有安全日志(暂不支持)
其它类似程序
GScan 程序定位为安全人员提供的一项入侵检测工具,旨在尽可能的发现入侵痕迹,溯源出黑客攻击的整个路径。
chkrootkit 程序定位为安全人员提供的一项入侵检测工具,旨在发现被植入的后门或者rootkit。
rkhunter 程序定位为安全人员提供的一项入侵检测工具,旨在发现被植入的后门或者rootkit。
lynis 程序定位为安全人员日常使用的一款用于主机基线和审计的工具,可辅助漏洞扫描和配置管理,也可部分用于入侵检测。
Gscan代码分析
1、主机信息获取
获取主机名和版本信息通过platform模块来实现的
获取主机外网IP是通过sockt来连接外网实现
2、系统初始化alias检查
检测bash的环境变量是否发生改变。主要检测的是/root/.bashrc', '/root/.bash_profile', '/etc/bashrc', '/etc/profile'以及用户目录下的.bashrc看是否对系统命令进行alias(别名)设置。
原理:改变bash的命令的别名可能是一种安全隐患。
3、文件类安全扫描
1)hash对比看是否有重要文件发生变化,
2)读取文件内容与反弹shell特征进行对比,
3)读取文件与恶意特征进行对比
4)判断文件中是否存在域外ip
5)隐藏文件扫描(发现所有的隐藏文件,去掉正常的)
读取文件内容然后去分析,下面是检测反弹shell的,
1['/tmp/', '/var/tmp/', '/dev/shm/']
1['/home/', '/root/']
1find / ! -path "/proc/*" ! -path "/sys/*" ! -path "/run/*" ! -path "/private/*" -name "..*" 2>/dev/null
通过这个命令查找可以的隐藏文件。4、各用户历史操作类
获取所有的用户的历史操作命令,通过读取.bash_history文件来
1)分析命令中是否存在反弹shell或者域外IP的特征
4.1、境外ip操作类
4.2、反弹shell类
5、进程类安全检测
1)判断执行的文件中是否有恶意特征,通过/proc/[id]/exe
2)通过ps命令查看是否有反弹shell的特征
1ps -efwww 2>/dev/null | grep -v 'grep' | awk '{print $1" " $2" " $3" "$8}'
通过ps -efwww命令取出第一,二,三,八选项
3)通过PS命令检测是否有CPU,内存使用过多的问题
1ps aux|grep -v PID|sort -rn -k +3|head|awk '{print $1" "$2" "$3" "$4" "$11}'|grep -v 'systemd|rsyslogd|mysqld|redis|apache||nginx|mongodb|docker|memcached|tomcat|jboss|java|php|python'
通过这个命令取出CPU和内存的值然后与设定的标准进行比较
4)检测隐藏进程
通过ps -ef命令获取所有的进程pid, 然后遍历/proc目录获取pid,两者进行比较。
5)检查是否存在黑客工具的进程
1ps -efwww 2>/dev/null|grep -E 'minerd|r00t|sqlmap|nmap|hydra|aircrack'|grep -v 'grep'|awk '{print $1" "$2" "$3" "$8}'
6、网络链接安全检测
1)通过netstat -anp命令来获取IP,看是否有境外IP
1netstat -anp 2>/dev/null| grep ESTABLISHED | awk '{print $1" "$5" "$7}'
2)可疑端口链接
1netstat -anp 2>/dev/null| grep ESTABLISHED | awk '{print $1" "$5" "$7}'
3)检测是否存在网卡混杂模式
1ifconfig 2>/dev/null| grep PROMISC | grep RUNNING
7、后门类检测
1)检查系统环境变量中是否有恶意代码
2)检查/etc/ld.so.preload文件,检测是否有反弹shell,境外IP
3)定时任务
4)检测是否有SSH后门
1netstat -ntpl 2>/dev/null |grep -v ':22 '| awk '{if (NR>2){print $7}}'
找出除了22端口的其它网络连接进程ID,然后看其执行文件中是否有sshd
5)分析SSH Server wrapper 后门
1file /usr/sbin/sshd 2>/dev/null
6)分析inetd后门/etc/inetd.conf
7)分析xinetd后门 /etc/xinetd.conf/
8)程序中具有setuid后门的
1find / ! -path '/proc/*' -type f -perm -4000 2>/dev/null | grep -vE 'pam_timestamp_check|unix_chkpwd|ping|mount|su|pt_chown|ssh-keysign|at|passwd|chsh|crontab|chfn|usernetctl|staprun|newgrp|chage|dhcp|helper|pkexec|top|Xorg|nvidia-modprobe|quota|login|security_authtrampoline|authopen|traceroute6|traceroute|ps'
9)启动项检查
8、账户类安全排查
1)查找UID=0的用户
1awk -F: '$3==0 {print $1}' /etc/passwd 2>/dev/null
2)查找组权限为0的用户
1cat /etc/passwd | grep '/bin/bash' | awk -F: '$4==0 {print $1}' 2>/dev/null
3)空口令用户
1awk -F: 'length($2)==0 {print $1}' /etc/shadow 2>/dev/null
4)sudo权限异常账户
1cat /etc/sudoers 2>/dev/null |grep -v '#'|grep 'ALL=(ALL)'|awk '{print $1}'
5)用户免密登录
对用户免密登录的公钥进行检测
6)passwd,shadow两个文件的权限变动检测
9、日志类安全分析
主要是检查登录IP中是否有境外IP
1)wtmp日志:通过IP看是否有境外IP
1who /var/log/wtmp 2>/dev/null|awk '{print $1" "$3" "$5}'
2)who命令
3)lastlog命令(/var/log/lastlog)
1lastlog 2>/dev/null | awk '{if (NR>1){print $1" "$3}}'
也是对IP进行检查
4)ssh爆破记录(通过secure日志)
10、安全配置类分析
1)检测DNS配置(/etc/resolv.conf)
1cat /etc/resolv.conf 2>/dev/null| grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}"
检测配置的ip是否正常
2)防火墙配置
/etc/sysconfig/iptables,检测是否有ACCEPT规则
3)host配置信息
/etc/hosts
检测配置的IP
11、Rootkit分析
1)rookit特征匹配
2)检测恶意的so文件
1find /lib/modules/ -name "*.so" -o -name "*.ko" -o -name "*.ko.xz" 2>/dev/null
12.WebShell类文件扫描
根据webshell特征进行检测
扫描web目录的可执行文件,特征匹配
12.1、WebShell类文件扫描