转载备份
0x00 前言在我们日常运维中,难免有几个网站或者主机被入侵,这时就出现应急响应需求。那么我们应该怎样着手分析昵?本文将为你细细道来,其中由于都是文字描述思路,所以各位要有耐心读完全文。但是这个思路分析讲解得非常详细,按部就班,一步一步描述了整个取证分析过程。 0x01 Webshell入侵的取证1取证的环境①被其他第三方通知,AA网站被种植了后门 ②管理员提供了打包后的源码及日志 2 调查的工作①清除掉网站上所有的webshell ②查找攻击者的入侵途径,并找到攻击者的ip地址 ③分析网站存在的安全问题,并且提供加固建议 3 取证思路1 查看各种配置文件 2 确定受到攻击的ipABCD所属的主机是内外网的linux/windows主机,运行什么业务等 3 收集该ABCD服务器上有 Web服务,例如Apache、strut2、spring;jboss,WebLogic、WebSphere等 4 抽取server.xml文件 查看jboss的应用程序访问日志记录、server.log 5 查看jboss/server/default/tmp 文件夹 看看是否有XX.war 之类的文件,如果有,该文件就是webshell 6 查看jboss/server/default//work/JBoss-web/localhost 文件夹,查看是否有java写的webshell会留有相对应的.java、.class文件 7 查看jboss/server/default//deploy/upload 和其他文件夹是否有 webshell 8 注意事项 一些webshell的名字 和 真正的文件名 非常相似,注意识别webshell的迷惑手段 一些webshell是XX.jar格式的,这是一个可以逃避很多杀软的反射型webshell。 一些webshell是以jboss匿名访问漏洞直接上传的war包,所以重启是不会自动删除的 9 我们查看其他文件夹里的文件,发现ls-sl,目测这是攻击者遗留的linux后门. 10 于是放在kali虚拟机里运行,netstat -an进行监控,看到了一个异常的ip,估计是攻击者的ip 0x02 webshell 取证总结1、在没有日志的情况下,本文可以通过其它手段查到攻击者的蛛丝马迹的。例如攻击者遗留的webshell
2、毕竟不同的攻击者有不同的入侵思路,所使用的webshell也有很大差别,故常见的.jsp和.war格式,甚至一个反射型后门。
3、有时当网站遭受入侵时,请告知管理员不要急于删除后门, 4、应该及时联系网络安全人员到场协助处理。 0x03 主机入侵取证1 取证的环境①某主机cpu占用至100%并出现可疑进程或者不断向外发送大流量。 ②主机未限制端口访问,ssh端口暴露外网,可以访问 ③外部大量ip在特定时间对主机进行暴力破解,并且有些成功登录记录 2 调查的工作①清除掉主机上的后门 ②找出攻击者成功安装后门的原因 ③分析主机存在的安全问题,并且提供加固建议 3 取证思路1 登入主机后,找到可疑进程PID 2 进入proc/进程目录找到对应文件绝对路径在/usr/bin目录下,stat /usr/bin/malicious_file 3 找出该文件的执行时间和权限 4 通过strings查看文件内容发现远程ip及其他信息 5 搜索ip发现为某个地方主机,通过google、whois等信息收集工具,进行信息收集 6 首先要判断攻击者通过什么途径入侵 一、服务器运行了web、ftp服务,但非root权限 二、last并未发现异常登录信息、history未发现可疑操作、且默认ssh端口禁止对外开放,故忽视了ssh入侵的判断 三、服务器存在bash漏洞,导致怀疑是bash漏洞+提权、但未发现可疑的accesslog 四、此前stat文件判断时间有误,事后发现管理员之前有kill程序进程操作,进程结束后会删除自身并生成新的文件,所以stat到的时间信息其实是管理员kill进程的时间 7ddos后门通过ssh暴力破解方式传播, 排查secure日志,攻击者使用一台主机进行暴力破解,破解成功后,再使用其他主机进行SSH登录 8 查看cron日志发现每隔一段时间,系统会执行两个恶意脚本 9 查看cron.sh文件内容 我们发现 其中/lib/libgcc.so通过文件大小及strings部分内容基本确定与/usr/bin下的恶意程序ohzxttdhqk相同;其中/lib/libgcc4.so通过文件大小及strings部分内容基本确定与/usr/bin下的恶意程序faksiubbri相同。 10 查看暴力破解的时间 和contab 执行任务的时间 查看secure日志,取之前发现ip成功验证ssh至断开连接时间差
11 其他疑点 验证发现通过scp远程拷贝文件至主机与ssh登录后退出都会产生Received disconnect的日志
如果通过ssh自动化部署,last为何会看不到记录?
是否单独清除了相关记录? 如果是scp远程拷贝,是通过什么方式执行程序的?
目前暂不知晓通过何种方式可以仅将文件放入机器后可以让程序自动执行,是否还有其他部署方式?
0x04 主机修复建议1 排查其他主机是否有重要端口对外
2 排查其他主机是否存在恶意文件,重点注意以下几点:
①/etc/init.d/目录下是否存在10位随机字母文件名的文件
②/etc/rc%d.d/S90+10位随机字母文件名的文件(%d为0-5数字)
③是否存在/etc/cron.hourly/udev.sh
④是否存在/etc/ cron.hourly/cron.sh
⑤/etc/crontab中是否存在可疑计划任务
⑥/usr/bin目录下是否存在10位随机字母文件名的文件
3 修复主机bash漏洞
4 增加主机密码复杂度(包括重要端口不对外主机)
5 针对异常情况主机,安全人员排查前尽量不要有操作,如果需要对文件有操作,一定要先保存stat信息结果,备份文件内容,修改密码/新建账户/删除账户前一定要先stat /etc/passwd与stat /etc/shadow并保存执行结果
0x05 入侵总结
在分析过程陷入瓶颈的时候,应该以多看各类日志为主。
一 web类入侵事件1、记录后门文件stat信息,判断入侵发生时间,另外需要与accesslog做对比,判断是否为第一个后门。 2、查找入侵者放置的其他后门可通过已知后门文件的mtime、文件内容等可作为特征查找,也可以与svn、此前备份文件做比对或者打包web目录文件使用一些webshell查杀软件。 3、查找一天内修改过的文件命令#find /home/work –mtime -1 –type f 4、查找系统中包含指定字符的所有文件(可以拿已知shell密码及特定字符作为关键字) #find /|xargs grep -ri "Bot1234" -l 2>/dev/null(执行后会改变所有文件的atime) 5、查看较大的日志文件时,先通过grep指定字符筛选,比如已知shell文件为conf.php,可使用命令 #fgrep –a ‘conf.php’ accesslog > conf_access 来筛选conf.php的访问记录.如果为一些高危漏洞,也可根据漏洞利用的关键字来筛选,通过第一步筛选结果后可找出入侵者ip等信息,可继续通过这些信息在accesslog中找到攻击者的所有访问记录以便进一步排查 6、判断影响时,当webshell操作为post且无流量镜像时,判断一些敏感文件如源码打包文件、包含密码信息文件是否被读取可通过文件atime信息来判断,此外对webshell的请求条数以及返回的字节数都可以作为定损的大概依据
二、非web方式入侵主要通过其他高危服,主要结合syslog判断 1、判断服务器是否支持访问外网,如支持,通过netstat –an查看是否已与外部可疑服务器建立连接,如已建立需及时断开 2、记录后门文件stat信息,根据mtime查找其他后门文件,同时根据文件属组与属组对应运行服务判断入侵方式 3、如果权限组为root,需要检测是否被种rootkit,rootkit检测可使用rkhunter:http://rkhunter.sourceforge.net/ 4、非web类后门,大部分人习惯把恶意文件放置在/tmp目录下,此外可通过可疑进程名与cpu占用率排查,有些后门会伪装正常进程名,但是top命令可通过cpu占用率找出后门进程,获取进程pid后可cd到/proc/对应pid目录,ls –al查看exe对应值可得知文件路径,另外可查看计划任务,后门程序为保证自启动往往会添加新的计划任务。
欢迎大家补充各种案例和分享各种思路 ^^_^^
|