Linux应急响应思路详谈
一、主机篇:
1、自动化初筛,建议使用RootkitHunter
(1)安装
$sudo wget https://jaist.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz
$sudo tar zxvf rkhunter-1.4..tar.gz
$sudo cd rkhunter-1.4.
$sudo sh install.sh --install
(2)使用(主要看一下,常用的基础的命令有没有被替换)
$/usr/local/bin/rkhunter --propupd
$/usr/local/bin/rkhunter -c --sk --rwo
(3)详细使用部分--引用自:https://yq.aliyun.com/ziliao/75349
详细内容见附录一
2、确保命令没有被替换后进行排查,第一步查看在线连接和登录日志(无论从什么途径进来的,如果能进来说明登录了才能完成操作,因此查看登录日志)
$sudo netstat -anpo #查看网络连接情况
$ps -ef 或者 $ps aux #查看异常进程
$top #查看资源占用情况
#查看登录操作情况
$last > last.log
$who /var/log/utmp #登录情况(很可能被删除)
$who /var/log/wtmp #登录情况(很可能被删除)
$cat /var/log/lastlog #最后登录日志(很可能被删除)
$cat /var/log/secure #登录日志,成功失败都有(很可能被删除)
$cat /var/log/faillog #登录失败日志,未必有
$cat /var/log/cron #计划任务,恶意程序、木马后门启动集中地或者cd /etc/crontab && ls
$cat ~/.bash_history 记录操作指令,但是最好有shelllog,因为shelllog是内核hook的,及时攻击者敲了unset history也可以记录操作
#有异常进程和连接先干掉,从甲方首先保障回复切断攻击,保护自己然后再开始分析入侵细节。从乙方来说也可以避免干扰。
#综上:shelllog是最王道的
3、系统级的(例如redis未授权访问利用备份机制写ssh证书密钥获取登录权限的、或者ssh爆破的):
根据上面查看的有漏洞修漏洞,弱密码改口令,清楚所有木马后门基本做不到,基本上对于安全制度要求都是重装机器,业务备份就非常重要,确保业务不中断。
查看最近被修改的文件、创建的文件、隐藏的文件等等,争取找到后门或其他恶意程序。
#find /path/ -mtime - -type f -print
#find /path/ -ctime - -type f -print
#ls -alt
提权检测(首先最好堵住臧脏牛等可以提权的漏洞,但出于业务对底层包文件、库文件的依赖无法升级的一定要做好边界防护)
$cat /etc/passwd #查看异常id gid 为0的
$lsof -g gid 查看相关文件
4、WEB级的
如果有网络流量的监控预警会大大便利web的入侵应急响应。因为可以获取到攻击时间、攻击来源、尤其是加载payload等重要信息,其实主机级别的一样,如果有网络级别的告警会更方便处理。
"""
比如,利用java反序列化漏洞,把写好的后门文件类通过java反序列化的方式传到服务器上,甚至无需服务器运行web服务器(只要有java rmi仓库即可),可以运行后门程序,全程没有web日志。只能从tcp流量中查看。
"""
一般查看日志:
#如果可以,先停止服务:
#查看日志--确定攻击源、确定攻击操作:
#根据时间,现象等信息或者更多信息,确定攻击者IP、攻击操作:
#access_log/error.log
$sudo cat access_log | awk '{print $1}'|sort|uniq -c| sort -n -t ' ' #按访问次数排序(nr)
$sudo cat access_log | grep a.b.c.d | grep "2018-01-09:10:10:10"
#一定要开启POST的部分的日志
#可以看出菜刀连接、木马后门访问、 SQL注入、反射性XSS、目录遍历、参数污染、文件上传、OS命令注入执行等。
#关于数据的库也可以去查看数据可的SQL运行日志,如果有后门去检查后门文件,命令执行看操作那些,一般命令执行了,肯定会弹shell。
后门检查:很多人说查eval和system啊,也有很多有经验的工程师说不能查这些词,有网络流量分析监控多好,能考到请求,查参数名(无论是GET还是POST)感觉蛮快的。
#找到所有的脚本文件打包:
$sudo find /var/www/html/ |grep -E ".asp$|.aspx$|.jsp$|.jspx$|.jspf$|.php$|.php3$|.php4$|.php5$|.inc$|.phtml$|.jar$|.war$|.pl$|.py$|.cer$|.asa$|.cdx$|.ashx$|.ascx$|.cfm$|.cgi$ "|xargs tar zcvf /tmp/shellscript.tar.gz
#解压缩后查找最近有改动的:
$sudo ls -alt
$sudo find ./ -mtime(ctime) x -name "*.[exetendfilename]"
#x 第x天前那一天内修改过的文档
#+x x天之前修改过的
#-x x天之内修改过的
#查看文件内容的:
$find ./ -name "x.[exetendfilename]" | xargs grep [neirong]
二、对于非传统攻击(例如APT攻击的)的应急处置:
1、快速断网:
根据上文中的对网络连接的查询, 快速查找到可以连接直接切断,疑似受控危险情况下,直接断网。(记录下可以IP、Domain)
2、进程排查:
根据进程,找到样本(木马、蠕虫、病毒、downloader),交由沙箱快速分析重点找到网络行为,如果已知更好。
可以采取的措施:
1、对于c&c的IP、域名要直接在防火墙上deny掉,或者直接托管(dns代理),dga类型的可以定期的检测dga域名,尝试预测或者根据逆向分析恶意样本得到的dga算法进行封堵或者托管。
2、已经感染的和未感染的机器进行隔离措施。
3、分析恶意样本行为以及失陷主机日志,分析评估损失。
4、进行全面的主机恶意样本检查。
5、回复或重装系统。
3、排查rookit,或许有深度隐藏恶意后门、如有可能,重新全面评估内部安全包括渗透测试,风险评估等。
三、小技巧(引用自同学兼同行hyber博客http://www.cnblogs.com/Hyber/p/6039551.html)
四、附录:
1、附录一RootkitHunter的详细使用:
指令参数说明:
/usr/local/bin/rkhunter
Usage: rkhunter {--check | --update | --versioncheck |
--propupd [{filename | directory | package name},...] |
--list [{tests | {lang | languages} | rootkits},...] |
--version | --help} [options]
Current options are:
--append-log 在日志文件后追加日志,而不覆盖原有日志
--bindir <directory>... Use the specified command directories
-c, --check 检测当前系统
--cs2, --color-set2 Use the second color set for output
--configfile <file> 使用特定的配置文件
--cronjob 作为cron定期运行
(包含参数 -c, --sk , --nocolors )
--dbdir <directory> Use the specified database directory
--debug Debug模式(不要使用除非要求使用)
--disable <test>[,<test>...] 跳过指定检查对象(默认为无)
--display-logfile 在最后显示日志文件内容
--enable <test>[,<test>...] 对指定检测对象进行检查
(默认检测所有对象)
--hash {MD5 | SHA1 | NONE | 使用指定的文件哈希函数
<command>} (Default is SHA1)
-h, --help 显示帮助菜单
--lang, --language <language> 指定使用的语言
(Default is English)
--list [tests | languages | 罗列测试对象明朝,使用语言,可检测的木马程序
rootkits]
-l, --logfile [file] 写到指定的日志文件名
(Default is /var/log/rkhunter.log)
--noappend-log 不追加日志,直接覆盖日志文件
--nocolors 输出只显示黑白两色
--nolog 不写入日志文件
--nomow, --no-mail-on-warning 如果有警告信息,不发送邮件
--ns, --nosummary 不显示检查结果的统计数据
--novl, --no-verbose-logging 不显示详细记录
--pkgmgr {RPM | DPKG | BSD | 使用特定的包管理用于文件的哈希值验证
NONE} (Default is NONE)
--propupd [file | directory | 更新整个文件属性数据库或仅仅更新指定条目
package]...
-q, --quiet 安静模式(no output at all)
--rwo, --report-warnings-only 只显示警告信息
-r, --rootdir <directory> 使用指定的root目录
--sk, --skip-keypress 自动完成所有检测,跳过键盘输入
--summary 显示检测结果的统计信息
(This is the default)
--syslog [facility.priority] 记录检测启动和结束时间到系统日志中
(Default level is authpriv.notice)
--tmpdir <directory> 使用指定的临时目录
--update 检测更新内容
--vl, --verbose-logging 使用详细日志记录 (on by default)
-V, --version 显示版本信息
--versioncheck 检测最新版本
-x, --autox 当X在使用时,自动启动检测
-X, --no-autox 当X在使用时,不自启检测有了rootkit hunter,侦测 rootkit 程序、侦测后门程序、以及主机端的套件检查问题就变得简单了,很多时候,rootkit hunter可以自动帮我们完成这些复杂的工作。
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索日志 , 文件 , 对象 , 程序 , 系统 哈希 linux rootkit扫描、rootkit扫描工具、linux rootkit工具、rootkit hunter、rootkithunter,以便于您获取更多的相关知识。
2、附录二:关于一些命令的使用我自己原来的博客合并过来:
(1)首先查看网络连接情况:
1 #netstat -anop | grep "ssh" /*查看ssh连接或者telent*/
2 #netstat -anop | grep "a.b.c.d" /*查看连接的IP*/
3 #ps aux /*查看可以进程*/
4 /*
5 可以结合起来,因为netstat -anop里面有pid
6 */
由上面确认是否攻击者仍在连接。如果连接,建议关闭网络或直接下线脱机应急。
(2)查看history
1 #history /*查看历史命令*/=》即使攻击者敲击了unset history 也至少会被记录这一条
如果觉得history历史记录太少请查看历史命令文件:
1 #vim ~/.bash_history
(3)查看用户:
1 #who /*查看登录情况*/
2 #whoami /*查看自己是谁*/
3 #vim /etc/passwd
4 #vim /etc/shadow
(4)查看最近被改过的文件:
1 #find /path/ -mtime -1 -type f -print
2 #find /path/ -ctime -1 -type f -print
3 #ls -alt
(5)查看所有脚本文件打包:
1 find /var/www/html/ |grep -E ".asp$|.aspx$|.jsp$|.jspx$|.jspf$|.php$|.php3$|.php4$|.php5$|.inc$|.phtml$|.jar$|.war$|.pl$|.py$|.cer$|.asa$|.cdx$|.ashx$|.ascx$|.cfm$|.cgi$ "|xargs tar zcvf /tmp/shellscript.tar.gz
(6)查看web日志:
1 /*access_log:/var/log/httpd/access_log*/
2 #cat access_log | awk '{print $1}'|sort|uniq -c 查看访问的ip
3 #cat access_log | awk '{print $1}'|sort|uniq -c| sort -n -t ' ' 按访问次数排序(nr)
4 #find ./ -name "*.php" |grep 404|xargs ls -la//(xargs)把前面的结果传到后面作为输入
5 /*awk指定符号切:-F '切割符号'
6 /*复杂的awk*/
7 #cat access_log | awk '{print $1"\t"$2}'
8 #cat access_log | awk'(/404/)'|wc -l
9 #cat access_log | awk '($1>2000&&$1~/172/)'#awk可以是表达式
10 #find /var/www/html/ -name "*.php" |xargs grep chenran 查看文件里面的内容
3、附录三:Unix日志分析读书笔记:
一、文件分析:
知识点1、敏感目录
(1)/tmp 临时文件
(2)/usr/bin , /usr/sbin , /bin 命令所在目录
(3)/etc/init.d 开机启动目录
知识点2、敏感文件
(1)/etc/rc.local 开机启动文件
(2)/root/.bash_history 命令执行历史信息文件
(3)/etc/password /etc/shadow 用户账户信息文件
(4)/etc/cron* 计划任务信息
知识点3、常用命令
(1)ls -alt [a 查看以.开头的隐藏文件;t 按时间排序;l 查看列表详细信息 ]
(2)取前x(x为正整数集合)项 head -n X
(3)查看文件详细信息 stat
(4)find ./ -mtime(ctime) x -name "*.php"
[-mtime 指不包含权限的文件修改时间]
[-ctime包含权限的文件修改时间]
[-name 后面是文件名的正则
(5)查看文件权限 find ./*.py -perm 4777 [-perm 后面权限号]
(6)查看命令文件是否替换 可以直接MD5检查。
二、网络与进程分析
知识点一、查看进程
(1)ps aux
(2)连接grep使用,例如grep xxx 或者 grep -v xxx [-v 排出xxx]
知识点二、查看网络
(1)netstat -antlp | more 基本信息关联查看
(2)lsof -i port 查看端口对应程序
知识点三、查看隐藏进程
(1)ps -ef | awk '{print}' | sort -n | uniq > 1
ls /proc | sort -n | uniq >2
diff 1 2
三、系统信息分析
知识点1、history分析 /root/.bash_history 分析历史执行命令
知识点2、敏感文件分析(参考敏感文件)
知识点3、开机启动分析(chkconfig)
知识点4、用户信息分析cat /etc/passwd | grep -E "/bin/bash$"能登录的用户
知识点5、环境变量系统路径分析 echo $PATH
知识点6、ssh分析 /etc/ssh /etc/.ssh
四、日志分析
知识点1、日志文件
(1)/var/log/wtmp
(2)/var/run/utmp
(3)/var/log/lastlog
(4)/var/log/btmp
知识点2、关键字
(1)Accepted
(2)Failed
(3)password
(4)invalid
知识点3、登录日志分析
(1)lastlog最近几次登录成功和最后一次登录失败相关信息
(2)who 查询当前用户信息
(3)whois 类似(2)
(4)users 类似(2)
(5)lastb 类似(1)
(6)finger
知识点4、两条语句
(1)grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -nr | more
(2)grep "Accepted" /var/log/auth.log | awk '{print $11}' | sort |uniq -c | sort -nr | more
四、后门排查
知识点1、webshell查找
(a)命令:
find /var/www/ -name "*.php" | xargs egrep 'assert | phpspy | c99sh | milw0rm | eval | \( gunerpress | \(bas464_encode | spider _bc | shell_exec | passthru | \(\$\_\POST\[|eval\(str_rotl3 | .chr\c|\$\{\"\_P|eval\C\$\_R | file_put_contents\C\.\*\$\_ | base64_decode'
五、应用类日志的几个小技巧:
知识点1、
find .access_log | grep xargs ip a.b.c.d
find .access_log | grep xargs trojan_name
cat access.log | cut -f 1(ip)/4(url) "" | sort | uniq -c | sort -k | -r head -10
cat access.log | sort -k 2 -n -r | head -10
Linux应急响应思路详谈的更多相关文章
- Linux应急响应(四):盖茨木马
0x00 前言 Linux盖茨木马是一类有着丰富历史,隐藏手法巧妙,网络攻击行为显著的DDoS木马,主要恶意特点是具备了后门程序,DDoS攻击的能力,并且会替换常用的系统文件进行伪装.木马得名于其 ...
- Linux应急响应(三):挖矿病毒
0x00 前言 随着虚拟货币的疯狂炒作,利用挖矿脚本来实现流量变现,使得挖矿病毒成为不法分子利用最为频繁的攻击方式.新的挖矿攻击展现出了类似蠕虫的行为,并结合了高级攻击技术,以增加对目标服务器感染 ...
- Linux应急响应(二):捕捉短连接
0x00 前言 短连接(short connnection)是相对于长连接而言的概念,指的是在数据传送过程中,只在需要发送数据时,才去建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一 ...
- Linux应急响应(一):SSH暴力破解
0x00 前言 SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全.SSH口令长度太短或者复杂度不够,如仅包含数字,或仅包 ...
- 最全Linux应急响应技巧 【转】
概述 Linux环境下处理应急响应事件往往会更加的棘手,因为相比于Windows,Linux没有像Autorun.procexp这样的应急响应利器,也没有统一的应急响应处理流程.所以,这篇文章将会对L ...
- Linux应急响应基础
文件排查 敏感目录文件分析 tmp目录 命令目录 /usr/bin /usr/sbin 开机启动项 /etc/init.d /etc/init.d是/etc/rc.d/init.d的软链接 文件时间 ...
- Linux应急响应学习
Linux应急响应-系统日志排查-溯源 溯源 找到攻击者.系统日志分析攻击者的ip 攻击者可能留下了一些代码 样本 网上的信息很大程度上是不可信的. 方法: 蜜罐 高交互的蜜罐 溯源: ip 日志 ...
- Linux应急响应入侵排查思路
0x00 前言 当企业发生黑客入侵.系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解 ...
- Linux应急响应姿势浅谈
一.前记 无论是甲方还是乙方的同学,应急响应可能都是家常便饭,你可能经常收到如下反馈: 运维同事 --> 服务器上存在可疑进程,系统资源占用高: 网络同事 --> 监控发现某台服务器对外大 ...
随机推荐
- C#捕获鼠标消息
在C#中怎样禁用鼠标按键,我们可以通过ImessageFilter接口下的PreFilterMessage方法.Application类的AddMessageFilter方法,RemoveMessag ...
- Oracle的sql语句中关键字冲突用双引号
select distinc user from instrument where created>"TO_DATE"('2015-02-05 12:00:00', 'yyy ...
- 谈API网关的背景、架构以及落地方案
Chris Richardson曾经在他的博客上详细介绍过API网关,包括API网关的背景.解决方案以及案例.对于大多数基于微服务的应用程序而言,API网关都应该是系统的入口,它会负责服务请求路由.组 ...
- kettle的jndi的使用
kettle可以使用jdbc的方式设置job或者tansform的数据库连接,但是,同时它也支持JNDI方式连接数据库,后者更加方便,只需要配置一份配置文件就可以了,不用每个DBConnection都 ...
- jQuery.Form插件介绍
一.前言 jQuery From插件是一个优秀的Ajax表单插件,使用它可以让你非常容易地.无侵入地升级HTML表单以支持Ajax.jQuery From有两个主要方法:ajaxForm和ajaxS ...
- there are 0 datanode.....
当时执行hive的导入数据load data inpath "XXXX" into table.....的时候发现总是导不进去,最后试了下简单的从Linux 到 HDFS上传文件 ...
- 关于Cocos2d-x中根据分数增加游戏难度的方法
1.GameScene.h中声明一些分数边界值 //level提升所需的分数 enum LevelUp_Score { Level1Up_Score = , Level2Up_Score = , Le ...
- php -- 取日期
1.获取当前时间方法date()很简单,这就是获取时间的方法, 格式为:date($format, $timestamp), format为格式 - 必需 timestamp为时间戳–可填参数. 比如 ...
- eclipse集成Python开发环境
话说近期听说 Python 非常牛, 非常强大, 至于到底有多强大, 俺作为一枚菜鸟也就不好发表太多评价. 言归正传, 本文教你在eclipse中安装 Python 插件, 以下我们就跟着步骤一起做吧 ...
- 今天搞log4net插入错误日志去mysql数据库的时候出现了点问题,已解决。记录下解决方案
先上图 配置log4net的时候要填这项,可是这个value我不知道啊.....上图里的value是我用下面的方法获取的 MySqlConnection con = new MySqlConnecti ...