Some knowledge points of hvv emergency response. It mainly includes webshell event handling process, linux, windows emergency response troubleshooting steps, etc.

webshell应急响应

攻击的两种方式

 钓鱼、0day

webshell事件处理流程

1
2
3
4
5
6
7
8
(a)现场访谈确定范围
(b)分析日志:
(1)日志存在:确定攻击事件->攻击特征->定位特征文件->确定攻击者IP->攻击复现
(2)日志不存在:黑盒发掘漏洞并查看相关配置文件是否存在弱口令,如tomcat的tomcat-userxml,反共黑客喜欢用的struts2漏洞
(c)根除webshell
(d)后门排查根除
(e)漏洞修补
(f)输出文档与建议

webshell事件表现

 安全设备报警、被上级部门通报、被挂黑链、被篡改首页

webshell事件发现时间

 根据客户发现的时间去定位日志时间

了解系统架构,如服务器类型、业务架构、网络拓扑等

 服务器类型:windows、linux etc..

 cms:dedecms、phpcms、trs cms etc..

 中间件、容器、框架、数据库:tomcat、iis、apache、weblogic、struts、mysql etc..

 脚本语言:asp、php、jsp etc..

 业务架构:如前端网页内容是否是后端通过ftp上传的(新闻网偏多) etc..

windows检测webshell

 查看用户信息:net user

 查看隐藏用户:cmd – compmgmt.msc – 本地用户和组 – 用户

 注册表查看用户:cmd – regedit – HKEY_LOCAL_MACHINE\SAM,为该项添加权限 – 打开:HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users – 导出所有以00000开头的项,将所有导出项与000001F4(该项对应administrator用户)导出内容做比较,若其中“F”值内容相同,则可能为克隆用户

 LP_Check.exe

windows查看进程、服务、驱动信息、网络连接

 进程:打开cmd – msinfo32 – 软件环境 – 正在运行任务,在此可查看进程名及其对应的执行文件;

 服务:打开cmd – msinfo32 – 软件环境 – 服务,在此可查看服务的启动情况及其对应的启动文件;

 驱动:打开cmd – msinfo32 – 软件环境 – 系统驱动程序,在此可查看驱动的启动情况及其对应的驱动文件;

 模块:打开cmd – msinfo32 – 软件环境 – 加载的模块,在此可查看被加载的DLL文件及其对应的文件路径;

 启动项:打开cmd – msinfo32 – 软件环境 – 启动程序,在此查看启动程序名及其对应的启动文件路径;

 PCHunter.exe工具查看也可以查看进程、服务、驱动、启动项;

netstat -ano | findstr "ESTABLISHED" -> 查看目前的网络连接,定位可疑的ESTABLISHED -> tasklist /svc|find "xxx"

 有的后门不能通过查看启动项来发现,比如通过Bitsadmin,就不能通过启动项发现这时候需要通过如下命令查找后门bitsadmin /list /allusers /verbose

linux查看用户信息

cat /etc/passwd。各列由冒号隔开,分别表示“用户名”“密码加密”“用户ID”“用户组ID”“注释”“用户主目录”“默认登录shell”。

 检查中需要与管理员确认是否有可疑用户,“用户ID”列中,一般情况下应该只有root的ID是0,其他用户的ID如果设置为0,即拥有root权限。UID为0的帐号也不一定都是可疑帐号,Freebsd默认存在toor帐号,且uid为0(toor 在BSD官网解释为root替代帐号,属于可信帐号)。

cat /etc/passwd 分析可疑帐号,可登录帐号。

 查看UID为0的帐号:awk -F: '{if($3==0)print $1}' /etc/passwd

 查看能够登录的帐号:cat /etc/passwd|grep -v "nologin" |grep -v "false"

lastlog命令,查看系统中所有用户最近一次登录信息。

lastb命令,查看显示用户错误的登录列表

last命令,查看显示用户最近登录信息(数据源为/var/log/wtmpvar/log/btmp)。utmp文件中保存的是当前正在本系统中的用户的信息。wtmp文件中保存的是登录过本系统的用户的信息。/var/log/wtmp 文件结构和/var/run/utmp 文件结构一样。

who命令,查看当前用户登录系统的情况

awk -F: 'length($2)==0 {print $1}' /etc/shadow命令,查看是否存在空口令账号

linux查看进程、服务、网络连接

 查看系统进程可以使用命令ps aux。“USER”列表示启动进程的用户名、“PID”列表示进程的PID值、“TIME”列表示进程已经运行的时间、“CMD”列表示启动进程的命令。

 强制结束进程可以使用命令kill -9(数字九) 进程的PID值,如kill -9 2535

netstat –anp命令查看进程、端口及对应的pid。之后根据pid,利用ls –alh /proc/pid命令查看其对应的可执行程序,也可以利用lsof –p pid查看pid对应的可执行程序

 如果是恶意进程,可以使用kill -9(数字九) 进程的PID值命令来结束进程,如kill -9 2535,然后使用rm -rf filename来删除木马,如果root用户都无法删除相关文件,很可能文件被加上了i属性,使用lsatter filename命令来查看文件属性,然后使用chattr -i filename命令来移除i属性继而删除文件。

lsof -i:port 查看指定端口对应的程序。

top命令根据cpu占用率查看可疑进程。

 查看隐藏进程,依次执行:ps -ef | awk '{print}' | sort -n | uniq >1ls /proc | sort -n |uniq >2diff 1 2

chkconfig –list命令可以查看系统运行的服务

ip link命令查看是否有恶意网卡,是否存在sniffer

arp –a命令查看arp记录是否正常。

ls ps很可能被黑客恶意替换,所以可以去命令目录查看相关系统命令的修改时间,如使用ls -alt /bin命令。可以查看相关文件的大小,如果大小明显偏大则很可能被替换,如使用ls -alh /binrpm -Va命令查看发生过变化的软件包,如果一切均校验正常将不会产生任何输出。使用第三方查杀工具如chkrootkitrkhunter进行查杀,来检测命令是否修改过。使用chkrootkit,如果出现INFECTED,说明检测出系统后门可以直接用./chkrootkit -q | grep INFECTED命令检测并筛选出存在INFECTED的内容。

windows系统日志

 默认情况下,Window的系统日志存放在%SystemRoot%\System32\Winevt\Logs,分别为:Application.evtx(应用程序日志);Security.evtx(安全性日志);System.evtx(系统日志);

 可以使用系统自带的“事件查看器”查看。打开事件查看器–window日志–安全,查看安全性日志,是否存在大量审核失败的日志(暴力破解)。若该帐号本身已被删除,则“用户”处将不会显示帐号名,而是显示一串帐号的SID值。多关注安全性日志中的特殊事件,比如说id为4728为把用户添加进安全全局组,如administrators组。

 这里列举一些有关检测时常见的事件ID:

(1)4726:把用户添加进安全全局组,如administrators组

(2)4624:大部分登录事件成功时会产生的日志

(3)4625:大部分登录事件失败时会产生的日志(解锁屏幕并不会产生这个日志)

(4)4672: 特权用户登录成功时会产生的日志,例如我们登录”administrator”,一般会看到一条4624和4672日志一起出现

(5)4648: 一些其他的登录情况,如使用 runas /user 登录除当前以外的其他用户运行程序时,会产生这样的日志。(不过runas命令执行时同时也会产生一条4624日志)

windows计划任务日志

 计划任务日志存放在C:\Windows\System32\Tasks

linux计划任务日志

crontab -l命令查看当前的任务计划有哪些

ls /etc/cron* 命令查看etc目录任务计划相关文件

cat /var/log/cron查看计划任务日志

ls /var/spool/mail命令查看相关日志记录文件

linux自启动日志

cat /etc/init.d/rc.localcat/etc/rc.localls -alt /etc/init.d/ls -alt /etc/rc.d/init.dls -alt /etc/rc.d/rcx.dls -alt /etc/rcx.d(x为数字0-6)、chkconfig命令查看开机启动程序(一般看到S97DbSecuritySpt肯定是中挖矿木马了)

linux系统日志

cat /var/log/messages命令查看整体系统信息,其中也记录某个用户切换到root权限的日志

cat /var/log/secure命令查看验证和授权方面信息。例如sshd会将所有信息记录(其中包括失败登录)在这里。

cat /var/log/lastlog命令查看所有用户的最近信息。二进制文件,因此需要用lastlog命令查看内容。

cat /var/log/btmp命令查看所有失败登录信息。使用last命令可查看btmp文件。例如last -f /var/log/btmp | more

cat /var/log/maillog命令查看系统运行电子邮件服务器的日志信息。例如sendmail日志信息就送到这个文件中。cat /var/log/mail/命令查看包含邮件服务器的额外日志。

cat /var/log/wtmpcat /var/log/utmp命令查看登录信息。二进制文件,须用last来读取内容

cat ~/.bash_history查看shell日志,查看之前使用过的命令。

windows文档日志

 各个盘下的temp(tmp)相关目录下查看有无异常文件

 有的时候黑客也会写入mof来进行提权,需要排查下mof是否异常,路径如下:c:/windows/system32/wbem/mof/

 查看用户recent相关文件,通过分析最近打开分析可疑文件

a) C:\Documents and Settings\Administrator\Recent

b) C:\Documents and Settings\Default User\Recent

c) 开始,运行%UserProfile%\Recent

 根据文件夹内文件列表时间进行排序,查找可疑文件

 通过确定后的入侵时间,以及webshell或js文件的关键字(比如博彩类),可以在web日志中进行过滤匹配,比如经常使用:

(a)知道是上传目录,在web log 中查看指定时间范围包括上传文件夹的访问请求:findstr /s /m /I “UploadFiles” *.log

(b)某博彩事件中的六合彩信息是six.js:findstr /s /m /I “six.js” *.aspx

(c)根据shell名关键字去搜索D盘spy相关的文件有哪些:for /r d:\ %i in (*spy*.aspx) do @echo %i

linux文档排查

md5sum -b filename 命令查看文件的md5值

ls -al查看隐藏的文件

find / -mtime 0命令查看最近24小时内修改过的文件

find / -name '*.php' -mmin -30命令查看最近30分钟修改的过的.php文件

stat filename命令查看文件的修改、创建、访问日期

ls -alh /tmp命令查看/tmp目录

ls –alh /root/.ssh/命令查看有没有恶意的ssh公钥

windows web日志排查

各容器日志默认路径如下:

 apache:apache\logs\error.log、apache\logs\access.log

 iis:C:\inetpub\logs\LogFilesC:\Windows\System32\LogFiles\W3SVC2

 tomcat:tomcat\access_log

 可以利用D盾webshell查杀工具对网站服务器进行全盘扫描,来发现webshell木马文件

linux web日志排查

各容器日志默认路径如下:

 apache:/etc/httpd/logs/access_log/var/log/httpd/access_log

 nginx:/usr/local/nginx/logs

 使用find . access_log |grep xargs ipfind . access_log| grep xargs filename命令来定位相关黑客攻击行为。

 使用cat access.log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -r | head -10命令查看页面访问排名前十的IP

 使用cat access.log | cut -f4 -d " " | sort | uniq -c | sort -k 1 -r | head -10命令查看页面访问排名前十的URL

 使用find /site/* -type f -name "*.jsp" |xargs grep "exec("命令来查找常规的webshell, 命令的意思是,搜索/site/目录下所有后缀为.jsp的文件,查看内容是否有”exec(“,”exec(“是jsp函数,很多一句话木马和大马都有这个函数。其他脚本的网站类似: find /site/* -type f -name “*.php” |xargs grep "eval("find /site/* -type f -name “*.asp” |xargs grep "execute("find /site/* -type f -name “*.aspx” |xargs grep "eval("

 如果木马做了免杀处理,可以查看是否使用加密函数

find /site/* -type f -name “*.php” |xargs grep "base64_decode"

 查看是否做了拼接处理

find /site/* -type f -name “*.php” |xargs grep "@$"

 对搜索到的内容,手动查看是否是木马,可以在本地打开脚本文件,查看网页生成时间等。

 使用grep -i select%20 *.log | grep 500 | grep -i \.php命令查找后缀为”.log” 文件,搜索关键字为”select%20”,筛选存在”500”的行,此命令可以拿来搜索有没有sql注入攻击

 使用grep -i sqlmap *.log sqlmap命令查看存在sqlmap的行,可以发现sqlmap拖库的痕迹。

 使用grep -i "script" *.log命令查找存在script的行,此命令可以拿来搜索有没有xss攻击。

 使用grep -i acunetix *.log命令查找存在acunetix的行,此命令可以拿来搜索有没有awvs扫描攻击。

 使用grep \[07/Jul/2016:24:00:* *.log命令可以结合入侵时间搜索相关请求,文件修改时间不可作为依据,菜刀上就可以修改文件时间属性。

 使用grep ^192.168.1.* *.log命令搜索包含“192.168.1.”字符串开头的行。

 使用grep -v ^192.168.10.* *.log命令不搜索包含“192.168.10.”字符串开头的行。

数据库日志排查:linux+windows

 MYSQL:windows默认配置路径为c:\windows\my.inimysql\my.ini;linux默认配置路径/etc/mysql/my.cnf,查看是否开启日志审计,如开启将显示日志路径。

 Windows常规mysql日志记录配置如下:

1
2
3
4
log-error="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/error.log"  
log="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/mysql.log"
long_query_time=2
log-slow-queries= "E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/slowquery.log"

 Linux常规mysql日志记录配置如下:

1
2
3
4
log-error=/usr/local/mysql/log/error.log  
log=/usr/local/mysql/log/mysql.log
long_query_time=2
log-slow-queries= /usr/local/mysql/log/slowquery.log

注意查看当前木马运行的当前用户,比如是mysql,很可能是通过mysql漏洞进来的,如果是httpd,很可能是通过web进来的。Mysql提权很可能利用udf进行提权,导出dll到mysql目录下的plugin目录。

流量日志排查:windows+linux

 wireshark抓包,利用“ip.addr == ip”可以指定只抓取某个ip的对内对外(包括来源与目的地)流量信息

 如果黑客利用msf中的 reverse_tcp进行上线,wireshark数据包中一般会有push标志位

 数据包中带有z0、eval、base64_decode,很可能就是中国菜刀连接时产生的数据包

 数据包中带有特殊的referer和Accept-Language,一般是黑客利用weevely webshell工具连接产生的

 linux下执行tcpdump可以抓取所有数据流量,“tcpdump host xx”抓取指定ip的流量信息,tcpdump port xx”抓取指定端口的流量信息

补充

 内存马只能重启

留言

2023-06-27

© 2024 wd-z711

⬆︎TOP