行业新闻

应急响应笔记

应急响应笔记

攻击者攻击网站的简易流程:

信息探测->注入/xss点->获取数据->破解密码->登陆后台->上传webshell->提权控制服务器->渗透内网

webshell在攻击过程中的作用

文件操作,命令执行,数据库操作,用户提权,shell反弹,权限维持

攻击者通过漏洞,第三方组件,**w用msfvenom生成war包,只用指定-f 后的参数为war就好了

Windows操作系统后门

影子账户:影子账户是指系统隐藏账户,在"控制面板-本地用户和组"里面看不见,但却有管理员权限的账户,

一般储存在注册表,影子账户的隐秘性十分之强

正常创建新用户的方式net user peng peng /add

创建影子用户的方式net user peng$ peng /add

隐藏账户无法使用"net user"命令查看,但是可以在"本地用户和组"可以查看

打开注册表"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names"找到刚刚创建的

peng$查看类型,查看administrator的类型,找到administrator的user目录和peng$的user目录,将

administrator下的F值的内容复制到peng$的F值下面,然后将这peng$的name值和对应的目录的内容导出,

然后使用net user peng$ /del将peng$删除,再将两个注册表文件导入,影子用户2.0创建成功

Run注册表后门

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

下的键值为开机启动项,每一次开机都会执行键值对应的程序或bat脚本

Logon Scripts后门

Logon Scripts是优先于很多杀毒软件启动的,所以可以通过这种方式达到一定的免杀效果.在注册表

**HKEY_CURRENT_USER\Environment这条路径下,添加新的字符串值,值的名字

为:UserInitMprLogonScript**,数值数据为想要启动程序的路径

Userinit注册表后门

Userinit的作用是在用户在进行登陆初始化设置时,会指定执行的程序,可以修改

**HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit**的键

值来添加要执行的程序,多个程序用逗号隔开,注销登录后执行

计划任务后门

Windows实现定时任务主要有schtasks与at两种方式,均可用于计划在某个日期和时间执行程序和脚本,其中

at命令在Windows8之后不再支持

创建一个名为test的计划任务每天12:00执行test.bat脚本
schtasks /create /tn test /sc DAILY /st 12:00 /tr C:\test.bat /F
at 12:00 /every:Monday.Tuesday,Wednesday,Thursday,Friday C:\test.bat

Bitsadmin后门:Bitsadmin后台智能传输服务,传输速度慢

MSF后门模块

拿到靶机的shell,输入指令**run metsvc -A**会创建一个后门

WMI型后门

wmic statrup list full \\自启动的程序

wmic process call create "calc.exe" 在当前机器中执行指定程序

wmi时间分两类:

本地时间:有生命周期,为进程宿主的周期

永久性WMI时间订阅,储存在WMI库中,以SYSTEM权限运行,并且重启之后依旧存在

Empire是一个后渗透框架,可以使用它来创建一个永久性的WMI事件订阅,从而在目标主机下留下持久化后门

使用Empire的wmi模块之前,需要使用Empire获得目标靶机的shell

Linux操作系统后门

alias

alias ll =ls -l

alias命令可以设置别名

将alias语句写入/etc/profile文件中

排查方法:输入alias就可以查看设置的别名

ssh后门设计
TCP_Wrappers
PAM后门
SSH后门

执行下main的命令可以使用任意密码ssh连接机器8888端口
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -OPort=8888

应急响应实操

如果被植入了木马,找到木马运行文件的PID之后,进行kill,但是发现kill了之后有出现了一个新的木马,发现这个木马并不能够直接杀死.

使用TOP查看进程,如果发现有木马进程.这个时候首要的是使用chmod 000 [木马路径]先将木马的权限全部去掉,然后使用chattr +i命令,给木马程序加一个锁.执行完之后,下一步就是查找这个程序对本机做了什么操作.

首先查看**/etc/crontab文件,查询是否添加了什么语句.然后是查看/var/spool/at/spool**/和**/var/spool/cron两个文件夹是否存在恶意文件.再查询/etc/init.d/下有无奇怪的进程.接下来查看/etc/cron. 查看这些目录下有无奇怪的文件。

最早查看netstat -anlpt发现有恶意流量的时候,首先应该开启防火墙将此流量加入黑名单,/etc/hosts.deny/etc/hosts.allow这两个文件起到一个微隔离的作用,例如再/etc/hosts.deny文件中加入sshd:ALL就禁止所有ssh进行连接,配置完需要重启服务.还需要查看/etc/rc.d目录,还要查看rc0.d下一些文件是否又被篡改

根除木马

查看/usr/bin目录,可以使用ls -thl给目录下的文件进行排序,还有一些命令的md5值被篡改.需要找到相同版

本的机器,将命令的md5值一个一个进行对比

如果是在业务期间:首先封锁住流量->确认感染的范围->抑制木马程序->再将木马程序进行查杀->安装第

三方工具在机器上运行(rkhunter)

可以查看*/etc/local/log/maillog文件,它会收到系统的邮件,记录root做了什么行为
中了病毒,都得重装eb容器
,拿到后台(各种姿势)等途径上传webshell

Webshell解析:
?php echo system($_GET[cmd]);?>
用get请求提交一个名为CMD的变量,然后变量中的字符受到前面system函数的调用,变成系统命令用来执行

Webs hell是以web服务端脚本(程序)形式存在,与传统服务端脚本的运行原理相同.对服务器本地资源具备一定的操作能力,其操作本地资源的范围取决于解析器的权限

webshell没有连接时是无状态的,代码是可以连接数据库的

PHP一句话(webshell)代码简单容易暴露
?php echo system($_GET[cmd]);?>
请求方式:get
asp一句话
%eval request("asd")%>
?php eval($_POST[cmd]);?>
eval执行数据
$_POST提交方式
cmd密码
?php include 'shell.jpg';?>

包含并运行包含的文件

包含的文件shell.jsp(txt.png啥都行)

可以先上传一串以文本(txt)形式的php代码,然后再次上传一个包含include函数的php代码.当include函数

的php代码上传成功,访问include函数的php代码,include函数所包含的文件名是之前所上传的txt为后缀的

文件,但是内容却是为php的代码,会将txt文件的内容当作php代码来执行

webshell原理:文件操作,命令执行,其他功能

webshell的基本特征

本地资源的操作:读取软硬件信息,本地硬盘文件的读写操作,调用本地命令

无上下级链接:无外部链接可连接至webshell,webshell通常不链接到本地其他文件

传参数,认证登陆,?cmd=ls

POST类型 需要webshell管理工具
webshell是由名字的
webshell是会在日志中留下痕迹的
webshell是有属性的
webshell是一种脚本功能的展现(TEXT)

web扫描/爬虫/google hack检测

基于web日志的检测
基于文件属性的检测
基于文件内容的检测
通过文件名搜索webshell:统计webshell常用名字

web日志检测webshell

部分webshell会将操作目标参数放在url参数中

日志若可记录referer字段,可对搜索referer字段为空的链接,因为绝大多数webshell无上下级链接,侵略者会

直接访问webshell文件

搜索思路:搜索文件名,搜索write exec等参数,搜索referer字段为空的日志条目

对于使用post的webshell无法检测

文件可用属性:

文件创建日期:(设置文件的创建基准日期[用户附件目录除外],以创建时间为线索进行搜索,基准日期后所有文件)

文件最后修改日期:(方法同上,用于查找被插入到已有文件中的一句话木马)

文件的目录结构及md5值:(初始状态下设立安全基准值,安装状态下记录web目录结构并对目录中文件计

算,MD5值[可变文件和用户附件目录除外]定期进行匹配比对,并更新新的安全基准值)

特殊目录中的特殊类型文件

通过文件内容/类型检测webshell:

黑客常用关键词,常用命令执行,文件操作函数

基于文件属性的检测

特殊目录的特殊类型文件

用户可写入的目录

非用户可写入的文件类型

可通过文件头的方式进行排查以防止类似gif木马

针对webshell的各种特征码的小工具

NepPI,D盾,LinuxCheck,Webshellkiller,Fastsum MD5值校验

Webshell查杀最佳实践:目录结构md5校验;特征码扫描;页面title页面关键字;流量 人工识别(关键banner)

Webshell防御:

避免常规的漏洞:注入;后台泄露;前置缺陷;等等....

Webshell防范最强准则:可写的目录不可执行;可执行的目录不可写;权限 用户 tty;

网络攻击事件

安全扫描攻击:黑客利用扫描器对目标进行漏洞探测,并在发现漏洞后进一步利用漏洞进行攻击
暴力破解攻击:对目标系统账号进行暴力破解,获取后台管理员权限
系统漏洞攻击:利用操作系统,应用系统中存在漏洞进行攻击
Web漏洞攻击:通过SQL注入漏洞,上传漏洞,XSS漏洞,授权绕过等各种Web漏洞进行攻击
拒绝服务攻击:通过大流量DDOS或者cc攻击目标,使目标服务器无法提供正常的服务

其他网络攻击行为

恶意程序主要类型及危害
病毒,蠕虫->造成系统缓慢,数据损坏,运行异常
远控木马 ->主机被黑客远程连接
僵尸网络程序(肉鸡行为)->主机对外发动DDOS攻击,对外发起扫描攻击行为
挖矿程序->造成系统资源打量消耗

网站恶意代码常见类型及危害
Webshell后门->黑客通过webshell控制主机
网页挂马->网页被植入待病毒内容,影响访问者安全
网页暗链->网站被植入菠菜,色情,游戏等广告内容

信息破坏事件
系统配置篡改->系统中出现异常的服务,进程启动项,账号等等
数据库内容篡改->业务数据遭到恶意篡改,引起业务异常和损失
网站内容篡改->网站页面内容被何可恶意篡改
数据信息泄露事件->服务器数据,会员账号遭到窃取并泄露

其他破坏事件
账号被异常登陆->账号系统在异地登陆,可能出现账号密码的泄露
异常网络连接->服务器发起对外的异常访问,连接到木马主控端,矿池,病毒服务器等行为

各种服务器Web日志存放位置
%systemroot%\system32\logfiles\w3svc1\ Windows IIS
其他服务器找到配置服务的配置文件 检索/log/out
通常:access.log,error.log,debug.log......

取证注意事项

工具携带;IP保存;验证留存;沟通;第三人;保护现场;
取证工具:Ghost;Windows PE;Linux CD;
日志分析:Log Parser 2.2;Grep
日志切割:Split|cat|dd|head|tail|awk
过程验证:Nc|curl|Wget|Sqlmap|Hackbar

处理过程

开始->过程->结果
开始:日志提取;日志分析;
过程:关联分析(头脑风暴);数据支持;
结果:回溯攻击;查找本源;

被入侵后的排查思路

调取账号口令列表,检查弱口令账户
检查高权限组中是否存在越权账户
通过注册表查看隐藏克隆账户
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users
Windows常见的event ID对应事件
4624->登录成功;
4625->登录失败;
4634->注销成功;
4647->用户启动的注销;
4672->使用超级用户(如管理员)进行登录;
4720->创建用户;
4624->事件中的登录类型

进程排查思路

没有签名验证的信息
没有描述信息的进程
进程的启动用户
进程的路径是否合法
CPU或内存资源占用长时间过高的进程
可以在系统中找到服务文件,查看端口号是否合法
文件路径:C:\Windows\system32\drivers\etc\services
打开msconfig,查看启动项
查看注册表中的:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RUN
其他注册表启动项
HKEY_CURRENT_USER\software\micorsoft\Windows\currentversion\run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
打开本地组策略,域环境还需要检测DC上的组策略:gpedit.msc本地组策略,查看是否存在启动脚本
查看所有任务计划,对比工作记录
管理工具中打开任务计划,还要再cmd中执行at检查计划
查看服务启动类型
打开services.msc检查启动类型为"自动"的服务

查找用户最近使用文件或者目录

在运行中输入用户名\recent
如果得到木马或者webshell的创建时间,就根据时间来搜索文件
第三方软件对注册表进行排查
打开Registry Workshop搜索注册表中某段时间修改的项

Linux IRE入侵检查框架

1.系统安全检测(进程,开放端口,连接,日志等):这一块是目前个人脚本所实现的功能
2.rootkit:简易使用rootkit专杀工具来检测,如rkhunter
3.webshell:这一块查杀技术难度相对较高,不是本脚本所需要实现的功能,针对这一块的检测可以使用D盾来检查(Linux下可以将web目录挂载到Windows下进行检查)
4.web日志
5.流量:这一块主要侧重主机的流量分析,目前个人使用tshark,tcpdump实现了基础的流量分析,后期会进行相应的完善,流量这一块可以提取流量五元组,DNS流量,HTTP流量再结合威胁情报的数据进行深度分析.这个后期个人会进行相关的尝试,可能的话会进行相应内容的分享

入侵检查框架

账号安全
用户信息文件
/etc/passwd root: x :0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell
用户名:密码:用户ID:组ID:用户说明:家目录:登录之后shell 注意:无密码只允许本机登录,远程不允许登录
影子文件/etc/shadow
用户名:加密文件,密码最后一次修改日期,两次密码的修改时间间隔,密码有效期,密码修改到期到的警告天数,密码过期之后的宽限天数,账号失效时间,保留
who查看当前登录用户(tty本地登录,pts远程登录)
w查看系统信息,想知道某一时刻用户的行为
uptime查看登录多久,多少用户,负载

检查账号中的危险信息

查询特权用户(特权用户uid为0)
awd -F: '$3==0{print $1}' /etc/passwd
查询有密码可以远程登录的账号信息
awd '/ \ $1|\ $6/{print $1}' /etc/shadow-
除root账号外,其他账号是否存在sudo权限.如非管理需要,普通账号应删除sudo权限
more /etc/sudoers | grep -v "^#\ | ^$" | grep "ALL=(ALL)"
检查用户执行过的系统命令

在账户家目录中检查该账户执行过的命令

bash_history
保存10000天历史记录
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
历史操作命令的清除:history -c
但此命令并不会清楚保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录
cat /root/.mysql_history >> /tmp/root_sql_history.txt
查看可以端口连接对应的程序
检查端口连接
netstat -antlp|more
根据PID查看进程文件
ls -l /proc/ 73730/exe
查看进程的状态
排查进程启动时间,CPU占用,内存占用
启动时间排序
ps aux --sort=+start
CPU占用排序
ps aux --sort=+%CPU
内存占用排序
ps aux --sort-+rss
检查启动级别目录中存在的脚本
检查目录:/etc/rc.d/rc0-6.0目录中的脚本
检查目录:/usr/lib/systemd/system/
查看计划任务列表:crontab -l
插件计划任务目录:/var/spool/cron/ * ;/etc/cron.d/ * ;/etc/cron.daily/ * ;/etc/hourly/ * ;/etc/cron.monthly/ * ;/etc/cron.monthly/ * ;/etc/cron.weekly/ ;/etc/anacrontab ;/var/spool/anacron/ * ;
查看一次性计划任务
at -l
列出哪些服务随开机启动
systemctl list-unit-files | grep enabled
chkconfig --list
查找root最近20修改过的文件
find /etc -iname " * " -ctime +20 -type f
查找有粘滞位的文件
find / -perm u=s
查找可执行的文件
find / perm a=x -type f
SUID:是一种特殊权限,设置了suid的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限。例如执行一个属主是root的文件,那么执行的成员将会短暂的拥有root权限
通过查看日志找出渗透时间点
Webshell(java)介绍
webshell的核心在于命令执行及数据传递,如:
利用Runtime.getRuntime().exec(cmd)执行cmd命令
利用java.io.InputStream和OutputStream下载文件
利用文件/数据库操作函数,控制文件/数据库等
无回显
最简单的webshell如图,通过执行传入的i参数可执行任意命令
%Runtime.getRuntime().exec(request.getParameter("i"));%>
有回显带验证
更进一步,较为常见的webshell如图,其利用pwd参数控制权限,利用exec函数执行从cmd参数中获得到的指令,并将执行结果会显出来
远程执行下载文件
该webshell只有下载文件的功能,无法执行系统命令.通过传入的文件名称和文件下载URL执行下载功能
其他类型
其他类型的木马都是在核心函数基础上添加额外的功能,方便使用,如菜刀的木马核心流程如图
其中AA(),BB()之类分别对应不同功能,如AA执行命令,其中包含exec函数,BB进行数据库操作,包括了常见的数据库函数等
war包
jsp木马不一定都是jsp形式,还常以war形式出现
如weblogic/tomcat等服务器管理后台存在弱口令,可通过直接部署war包获取shell
部署的war包内容如右图所示,核心依旧是jsp的shell文件
用msfvenom生成war包,只用指定-f 后的参数为war就好了

Windows操作系统后门

影子账户:影子账户是指系统隐藏账户,在"控制面板-本地用户和组"里面看不见,但却有管理员权限的账户,一般储存在注册表,影子账户的隐秘性十分之强
正常创建新用户的方式
net user peng peng /add
创建影子用户的方式
net user peng$ peng /add
隐藏账户无法使用"net user"命令查看,但是可以在"本地用户和组"可以查看
打开注册表"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names"找到刚刚创建的peng$查看类型,查看administrator的类型,找到administrator的user目录和peng$的user目录,将administrator下的F值的内容复制到peng$的F值下面,然后将这peng$的name值和对应的目录的内容导出,然后使用net user peng$ /del将peng$删除,再将两个注册表文件导入,影子用户2.0创建成功

Run注册表后门

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
下的键值为开机启动项,每一次开机都会执行键值对应的程序或bat脚本

Logon Scripts后门

Logon Scripts是优先于很多杀毒软件启动的,所以可以通过这种方式达到一定的免杀效果.在注册表**HKEY_CURRENT_USER\Environment这条路径下,添加新的字符串值,值的名字为:UserInitMprLogonScript**,数值数据为想要启动程序的路径

Userinit注册表后门

Userinit的作用是在用户在进行登陆初始化设置时,会指定执行的程序,可以修改**HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit**的键值来添加要执行的程序,多个程序用逗号隔开,注销登录后执行

计划任务后门

Windows实现定时任务主要有schtasks与at两种方式,均可用于计划在某个日期和时间执行程序和脚本,其中at命令在Windows8之后不再支持
创建一个名为test的计划任务每天12:00执行test.bat脚本
schtasks /create /tn test /sc DAILY /st 12:00 /tr C:\test.bat /F
at 12:00 /every:Monday.Tuesday,Wednesday,Thursday,Friday C:\test.bat
Bitsadmin后门:Bitsadmin后台智能传输服务,传输速度慢

MSF后门模块

拿到靶机的shell,输入指令**run metsvc -A**会创建一个后门

WMI型后门

wmic statrup list full \\自启动的程序
wmic process call create "calc.exe" 在当前机器中执行指定程序
wmi时间分两类:
本地时间:有生命周期,为进程宿主的周期
永久性WMI时间订阅,储存在WMI库中,以SYSTEM权限运行,并且重启之后依旧存在
Empire是一个后渗透框架,可以使用它来创建一个永久性的WMI事件订阅,从而在目标主机下留下持久化后门
使用Empire的wmi模块之前,需要使用Empire获得目标靶机的shell

Linux操作系统后门

alias
alias ll =ls -l
alias命令可以设置别名
将alias语句写入/etc/profile文件中
排查方法:输入alias就可以查看设置的别名
ssh后门设计
TCP_Wrappers
PAM后门
SSH后门
执行下main的命令可以使用任意密码ssh连接机器8888端口
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -OPort=8888
应急响应实操
如果被植入了木马,找到木马运行文件的PID之后,进行kill,但是发现kill了之后有出现了一个新的木马,发现这个木马并不能够直接杀死.
使用TOP查看进程,如果发现有木马进程.这个时候首要的是使用chmod 000 [木马路径]先将木马的权限全部去掉,然后使用chattr +i命令,给木马程序加一个锁.执行完之后,下一步就是查找这个程序对本机做了什么操作.首先查看**/etc/crontab文件,查询是否添加了什么语句.然后是查看/var/spool/at/spool**/和**/var/spool/cron两个文件夹是否存在恶意文件.再查询/etc/init.d/下有无奇怪的进程.接下来查看/etc/cron. 查看这些目录下有无奇怪的文件,最早查看netstat -anlpt发现有恶意流量的时候,首先应该开启防火墙将此流量加入黑名单,/etc/hosts.deny/etc/hosts.allow这两个文件起到一个微隔离的作用,例如再/etc/hosts.deny文件中加入sshd:ALL就禁止所有ssh进行连接,配置完需要重启服务.还需要查看/etc/rc.d目录,还要查看rc0.d下一些文件是否又被篡改

根除木马

查看/usr/bin目录,可以使用ls -thl给目录下的文件进行排序,还有一些命令的md5值被篡改.需要找到相同版本的机器,将命令的md5值一个一个进行对比
如果是在业务期间:首先封锁住流量->确认感染的范围->抑制木马程序->再将木马程序进行查杀->安装第三方工具在机器上运行(rkhunter)
可以查看*/etc/local/log/maillog**文件,它会收到系统的邮件,记录root做了什么行为
中了病毒,都得重装

关闭