从系统入侵到Web攻击,从信息泄露到木马和病毒的植入,我们时时刻刻面临着网络入侵带来的风险。我们知道,在PPDR安全模型里,动态的自适应网络安全模型在安全策略的引导下包含有检测、响应和防护三种机制。然而入侵检测系统大多只能处理一些特征明显的攻击,如遇新的攻击或无法捕捉或无法定性分析,所以常常要做的就是通知管理员,请迅速处理。那么,这时候就要进行手工排查了,我们的故事从这里讲起。
手工排查就是基于主机的检测了,主要目标是主机的日志和各种敏感文件。
定位攻击类型->掌握时间范围->分析文件->分析进程->分析系统->分析日志->分析关联->逻辑推理->总结
(1)查看文件的变化
查找24小时内被修改的JSP文件: find ./ -mtime 0 -name "*.jsp"
查找72小时内新增的文件find / -ctime -2
查找指定时间内修改的文件ls -al /tmp | grep "Nov 22"
(2)查看敏感目录
查看tmp目录下的文件:
查看开机项:
查看指定目录下文件时间的排序:
使用stat对可疑文件进行详细查看,包括创建修改时间和访问时间:
(1)使用netstat 网络连接命令,分析可疑端口、可疑IP、可疑PID及程序进程
(2)使用ps命令,分析进程
(3)结合netstat和ps:
发现进程722、2189
查看指定端口对应的程序:
(4)使用ls 以及 stat 查看系统命令是否被替换。
两种思路:第一种查看命令目录最近的时间排序,第二种根据确定时间去匹配。
ls -alt /usr/bin | head -10
ls -al /bin /usr/bin /usr/sbin/ /sbin/ | grep "Jan 15"
注:如果日期数字<10,中间需要两个空格。比如1月1日,grep “Jan 1”
(1)分析可疑账号
查看UID为0的帐号:
查看能够登录的帐号:
(2)查看分析任务计划
查看当前的任务计划:crontabl -l
查看etc目录任务计划相关文件,ls /etc/cron*
(3)查看linux 开机启动程序
查看rc.local文件(/etc/init.d/rc.local /etc/rc.local)
ls –alt /etc/init.d/:
(1)使用lastlog命令,系统中所有用户最近一次登录信息。
(2)使用lastb命令,用于显示用户错误的登录列表
(3)使用last命令,用于显示用户最近登录信息(数据源为/var/log/wtmp,var/log/btmp)
utmp文件中保存的是当前正在本系统中的用户的信息。
wtmp文件中保存的是登录过本系统的用户的信息。
(4)分析系统路径,查看有无敏感信息
(5)指定信息检索
strings命令在对象文件或二进制文件中查找可打印的字符串
分析sshd 文件,是否包括IP信息strings /usr/bin/.sshd | egrep '[1-9]{1,3}.[1-9]{1,3}.'
根据关键字匹配命令内是否包含信息(如IP地址、时间信息、远控信息、木马特征、代号名称)
(6)查看ssh相关目录有无可疑的公钥存在
Redis(6379) 未授权恶意入侵,即可直接通过redis到目标主机导入公钥。
目录: /etc/ssh ./.ssh/
使用工具chkrootkit 和rkhunter。
chkrootkit主要功能:(1)检测是否被植入后门、木马、rootkit。(2)检测系统命令是否正常。(3)检测登录日志
kali Linux自带
rkhunter主要功能:(1)系统命令(Binary)检测,包括Md5 校验。(2)Rootkit检测。(3)本机敏感目录、系统配置、服务及套间异常检测。(4)三方应用版本检测
RPM check检查:系统完整性也可以通过rpm自带的-Va来校验检查所有的rpm软件包,有哪些被篡改了,防止rpm也被替换,上传一个安全干净稳定版本rpm二进制到服务器上进行检查。如果一切均校验正常将不会产生任何输出。如果有不一致的地方,就会显示出来。输出格式是8位长字符串, c 用以指配置文件, 接着是文件名. 8位字符的每一个 用以表示文件与RPM数据库中一种属性的比较结果 。
. (点) 表示测试通过。
下面的字符表示对RPM软件包进行的某种测试失败:
Webshell查找:Webshell的排查可以通过文件、流量、日志三种方式进行分析,基于文件的命名特征和内容特征,相对操作性较高,在入侵后应急过程中频率也比较高。
日志文件 /var/log/message
包括整体系统信息 /var/log/auth.log
包含系统授权信息,包括用户登录和使用的权限机制等 /var/log/userlog
记录所有等级用户信息的日志。 /var/log/cron
记录crontab命令是否被正确的执行 /var/log/xferlog(vsftpd.log)记录Linux FTP日志 /var/log/lastlog
记录登录的用户,可以使用命令lastlog查看 /var/log/secure
记录大多数应用输入的账号与密码,登录成功与否 var/log/wtmp
记录登录系统成功的账户信息,等同于命令last var/log/faillog
记录登录系统不成功的账号信息,一般会被黑客删除
日志查看分析,grep,sed,sort,awk综合运用
基于时间的日志管理:
/var/log/wtmp
/var/run/utmp
/var/log/lastlog(lastlog)
/var/log/btmp(lastb)
登录日志可以关注Accepted、Failed password 、invalid特殊关键字
登录相关命令
lastlog 记录最近几次成功登录的事件和最后一次不成功的登录
who 命令查询utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机 w 命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息
users 用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名把显示相同的次数
last 命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户
finger 命令用来查找并显示用户信息,系统管理员通过使用该命令可以知道某个时候到底有多少用户在使用这台Linux主机。
几个语句
定位有多少IP在爆破主机的root帐号 grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
登录成功的IP有哪些 grep "Accepted " /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
tail -400f demo.log #监控最后400行日志文件的变化 等价与 tail -n 400 -f (-f参数是实时)
less demo.log #查看日志文件,支持上下滚屏,查找功能
uniq -c demo.log #标记该行重复的数量,不重复值为1
grep -c 'ERROR' demo.log #输出文件demo.log中查找所有包行ERROR的行的数量
6.相关处置
kill -9
chattr –i
rm
setfacl
ssh
chmod
a) C:\Documents and Settings\Administrator\Recent
b) C:\Documents and Settings\Default User\Recent
c) 开始,运行 %UserProfile%\Recent
(1)netstat -ano 查看目前的网络连接,定位可疑的ESTABLISHED
(2)通过tasklist命令进行进程定位,查看可疑程序
使用set命令查看
(1)变量的设置
(2)Windows 的计划任务;
(3)Windows 的帐号信息,如隐藏帐号等
(4)配套的注册表信息检索查看,SAM文件以及远控软件类
(5)查看systeminfo 信息,系统版本以及补丁信息
例如系统的远程命令执行漏洞MS08-067、MS09-001、MS17-010(永恒之蓝)…若进行漏洞比对,建议使用Windows-Exploit-Suggester : https://github.com/GDSSecurity/Windows-Exploit-Suggester/
使用PC Hunter,下载地址:http://www.xuetr.com
功能:
1.进程、线程、进程模块、进程窗口、进程内存信息查看,杀进程、杀线程、卸载模块等功能
2.内核驱动模块查看,支持内核驱动模块的内存拷贝
3.SSDT、Shadow SSDT、FSD、KBD、TCPIP、Classpnp、Atapi、Acpi、SCSI、IDT、GDT信息查看,并能检测和恢复ssdt hook和inline hook
4.CreateProcess、CreateThread、LoadImage、CmpCallback、BugCheckCallback、Shutdown、Lego等Notify Routine信息查看,并支持对这些Notify Routine的删除
5.端口信息查看,目前不支持2000系统
6.查看消息钩子
7.内核模块的iat、eat、inline hook、patches检测和恢复
8.磁盘、卷、键盘、网络层等过滤驱动检测,并支持删除
9.注册表编辑
10.进程iat、eat、inline hook、patches检测和恢复
11.文件系统查看,支持基本的文件操作
12.查看(编辑)IE插件、SPI、启动项、服务、Host文件、映像劫持、文件关联、系统防火墙规则、IME
13.ObjectType Hook检测和恢复
14.DPC定时器检测和删除
15.MBR Rootkit检测和修复
16.内核对象劫持检测
17.WorkerThread枚举
18.Ndis中一些回调信息枚举
19.硬件调试寄存器、调试相关API检测
20.枚举SFilter/Fltmgr的回调
21.系统用户名检测
打开后的截图:
可疑进程,隐藏服务、被挂钩函数:红色,然后根据程序右键功能去定位具体的程序和移除功能。根据可疑的进程名等进行互联网信息检索然后统一清除并关联注册表。
打开事件管理器:
分析安全日志,使用筛选功能:
把日志导出为文本格式,然后使用notepad++ 打开,加入正则表达式可以更快找到目标。同时,日志分析工具Log Parser值得推荐一下。
删除、查杀、清理
如Apache、tomcat、Nginx、IIS,任何web服务器其实日志需要关注的东西是一致的,即access_log和error_log。一般在确定ip地址后,通过:find . access_log |grep xargs ip攻击地址,find . access_log| grep xargs 木马文件名
在对WEB日志进行安全分析时,可以按照下面两种思路展开,逐步深入,还原整个攻击过程。
https://www.waitalone.cn/linux-find-webshell.html
http://vinc.top/category/yjxy/
http://www.shellpub.com/
http://linux.vbird.org/linux_security/0420rkhunter.php
https://cisofy.com/download/lynis/
https://sobug.com/article/detail/27?from=message&isappinstalled=1
http://www.freebuf.com/articles/web/23358.html
https://www.microsoft.com/en-us/download/details.aspx?id=24659
http://www.cnblogs.com/downmoon/archive/2009/09/02/1558409.html
http://wooyun.jozxing.cc/static/drops/tips-7462.html
http://bobao.360.cn/learning/detail/3830.html
https://yq.aliyun.com/ziliao/65679
http://secsky.sinaapp.com/188.html
http://blog.sina.com.cn/s/blog_d7058b150102wu07.html
http://www.sleuthkit.org/autopsy/