溯源反制方向引导
一、攻击源捕获
- 溯源反制的第一步,也是至关重要的一步
- 在发生网络攻击事件时,我们在应急响应的过程中,需要通过特定的手法去获取攻击者的信息。
- 例如
- 攻击者开始攻击的时间
- 攻击的手法
- 利用的漏洞
- 入口点是什么
- 有没有在服务器里留下后门
- 攻击者的IP地址是什么
- 被攻击的主机有哪些等等
- 例如
- 获取此类信息,一是为了后续的溯源取证,二是为了后续的加固准备
- 例如- 服务器被攻击,未找到攻击的入口点,那么针对此次事件该如何防护
- 如果未清理干净服务器上存在的后门,即使加固了服务器,但是攻击者依然可以利用现有的后门再次获取服务器的控制权限。
- 所以攻击源捕获是相当重要的第一步
二、边界防护
- 边界防护概念广泛应用于工业控制互联网
- 涉及的相关技术及设备
- 防火墙技术
- 多重安全网关技术
- IDS
- IPS
- 态势感知
- VPN
- 防病毒网关
- 邮件沙箱等
- 网闸技术以及数据交换技术
- 数据交换技术
- 边界防护主要靠这些安全设备,抵挡网络攻击,同时也可以在被攻击的时候进行快速溯源。
- 涉及的相关技术及设备
- 如今IPS、态势感知、邮件沙箱、蜜罐等安全设备已经广泛的被应用于各个企业
- 大多数时候可以通过这些安全设备追踪到攻击者的详细信息
- 例如
- 态势感知告警可以发现
- 攻击者攻击的时间
- 攻击源地址
- 目的地址
- 攻击的次数
- 攻击链路图
- 攻击的流量情况
- 邮件沙箱
- 捕获到攻击者发送的恶意邮件
- 捕获恶意样本
- 蜜罐
- 直接捕获到攻击者的ID信息
- 个人手机号码(使用热点)
- 邮箱
- 真实的IP地址等
- 态势感知告警可以发现
1.案例-记录某次应急响应
- 安全设备直接获取到了攻击者的跳板机IP地址、攻击者攻击成功的漏洞情况。
- 下图我们可以很清楚观测到
- 攻击的行为
- CC地址信息
- 被攻击的服务器地址
- 攻击活跃时间
- 下图我们可以很清楚观测到
- 通过安全设备进行筛选出攻击者利用的漏洞类型、具体时间
- 这样的话不但大大的减小了排查范围
- 同时也获取到了很关键的信息-攻击入口点
三、日志审计
- 日志审计主要是以下几类日志
- web服务日志
- 数据库日志
- 安全设备相关日志
- waf日志
- 安全软件日志
1.案例-应急响应审计windows系统日志发现攻击行为
- 首先客户现场工程师发现存在异常登录用户
- 现场提供了用户名"qianye"以及异常的时间节点
- 接着针对"qianye"用户对计算机安全日志进行排查
- 需要完整的计算机安全日志,查找后发现用户不存在
1).针对时间节点进行关联排查
- 发现计算机在凌晨十二点五十到一点三十之间存在大量的NTLMSSP暴力破解行为
- 次数高达三万五千余次
2).根据此时间点进行登录成功日志进行排查
- 终于找到了第一时间点登录的用户、时间以及源IP地址
3).从爆破时间和爆破成功时间来看
- 推测,此行为为内网后渗透工具自动化行为
- 攻击者从0:50一直爆破到1:33
- 实际上1:06就爆破成功了,而爆破行为并没有立刻停止
- 且从爆破日志可以看到,存在多个内网IP地址同一时间在爆破这台机器
- 发现没有单一的目标,推测此时内网已经至少有数台机器失陷了
- 排查失陷主机,谁对此机器进行爆破,谁就失陷
4).后续我们收集到多台内网机器对此机器进行NTLM登录行为
- 且在MSINSTALLER安装日志里,发现了大量的远程下载行为
- 通过对地址的情报收集、样本获取的分析结果
- 发现,此次事件为“紫狐Rootkit”传播事件
- 后面还有很多外联地址下载的都是该样本,紫狐Rootkit下载之后利用MSI程序进行安装部署
5).根据排查结果显示
- 该事件为紫狐Rootkit 攻击事件
- 主要是通过网络钓鱼电子邮件和漏洞利用工具包进行攻击
- 攻击带有蠕虫特性
- 可在内网通过SMB通讯协定互连的电脑,进行帐号、密码的暴力破解
- 之后将恶意程序植入这些电脑
- 紧接着
- 这个恶意的MSI安装文件在安装的过程中,可以看到它会伪装成微软更新套件
- 并会显示为含有随机字母及简体中文介面的视窗
- 一旦系统载入MSI档中的rootkit,安装程序随即就会命令受害者电脑进行重新开机的程序
- 目的是将恶意软件提供的DLL改为Windows操作系统的提供的DLL
- 然后在系统开机的过程中执行这些DLL,恶意软件也将跟着启动,随后开始散播
- 同时,恶意软件也会自动产生IP位址范围,并开始针对这些IP位址的445端口进行扫描
- 由于445端口是SMB协定常用的通讯协议,接着,恶意软件会通过SMB暴力破解使用者的身份验证
- 一旦身份验证成功,将会建立新服务,就如同受害者电脑初期感染的状况
四、服务器异常捕获
- 当服务器已经被入侵之后,在条件允许的情况下可以尝试上机操作来进一步排查
- 以紫狐Rootkit为例
- 排查ipsec规则,大多数Rootkit为了标记自己,在获取了服务器权限后都会在此留下痕迹,开放端口、设置白名单等等
- 此次排查到,ipsec 静态添加策略名称=qianye、Filter1、FilteraAtion1
- 对应注册表内容
- 注册表Svchost排查到异常项目
- TCPView流量显示
- 首先会通信一个紫狐Rootkit的外联地址
- 而后开始进行大量的外部网络1433端口扫描
- 占用的进程为gvchost,端口呈现递增状态
- 并且服务器存在隐藏的DLL恶意文件,该文件无法通过常规方式清除
- 该恶意样本加密了
- 通过不断地研究,也解决了如何清除恶意文件,给客户解决了在不重做系统(重做系统也没啥用)的情况下怎么消除影响
五、溯源反制-IP定位法
- 这个方法最不靠谱
- 需要获取到真实的IP地址,再通过IP定位法溯源
- 获取真实IP地址的几种可能
- 一种是人家用的家庭网络,你获取到了住户小区的出口IP地址
- 一种是热点,你获取到了当地基站的出口IP
- 一种是人家用了云服务器,你获取到了云服务器的公网IP
- 其实,你拿到了这三种IP地址也没用
- 除非警方介入,否则你抓不到人
- 还有成本太高
- 如果云服务厂商要是国内的,能帮你提供一下人员信息
- 但是这个云不是跳板机,要是国外的匿名服务器就呜呼了
- 大多数攻击者都会用代理攻击,专业些的会用很多的跳板机打你
- 不专业的也知道挂个代理或者上个人多的VPN,再加个TOR
- 如果设备功能很拉跨,或者没有设备,你基本没戏,洗洗睡吧。(仅适用于个人溯源)
- 当然技术实力硬的可以直接尝试拿TOR的权限,然后根据时间节点直接筛使用者IP,耗费成本一样能把你揪出来。
- 如何获取真实IP一直是一个难题
- 一般用设备,在骨干网络上,上设备去抓,但是效果微乎其微。
- 通过日志服务器相应日志,依靠全流量设备镜像半年内的流量。
- 攻击者在探测的时候,喜欢ping一下,扫端口,或直接访问,一不注意可能用了自己的真实IP物理机去访问
- 有时候通过筛选此类访问记录也是有机会找到的
- 特别是ping日志、telnet日志这些比较特殊的地方需要格外的主意
- 如果成功拿到了真实的IP地址,可以直接通过IP查询物理地址
- IP溯源网上案例:
https://www.freebuf.com/articles/network/339461.html
- IP溯源网上案例:
六、蜜罐捕获法
- 蜜罐,是指在计算机网络安全中使用虚假系统来诱导攻击者试图攻击或侵入它
- 可以帮助安全团队识别和追踪攻击者,并为未来的安全预防提供信息
- 就是弄一个完全仿真的系统,里面有真实存在的漏洞,但是其实所有数据都是假的,连环境都是假的
- 当攻击者攻击蜜罐系统时,蜜罐可能会利用jsonp跨域劫持获取到攻击者的ID信息
- 例如
- 攻击者使用的IP地址信息包括跳板机
- 设备指纹包括操作系统版本
- 浏览器信息
- 甚至是若是使用手机热点可能直接被运营商接口直接泄露手机号、邮箱账户等
- 溯源人员直接就可以找到人,非常的可怕。
- 例如
- 蜜罐作为溯源反制好帮手,在作战中起着很重要的作用
- 但是要是蜜罐自身存在安全问题,那就芭比Q了
- 要注意,蜜罐自身网络也需要与办公网生产网隔离开,以免作茧自缚,直接穿
- 现阶段识别蜜罐最简单粗暴的方法
- 查看网站源代码,关闭JS特效甚至是查看域名信息、IP端口信息或者一些工具去识别蜜罐
- 一年到头也没几个倒霉的踩蜜罐的
- 蜜罐案例请移步Freebuf
https://www.freebuf.com/articles/web/246060.html
七、渗透反打
- 常规情况下反打成功的都是打到了傀儡机、跳板机
1.傀儡机
- 一般情况下傀儡机以下最常见
- 网络上常见的网络设备
- 摄像头、网关、路由器 - 因为买家根本不会远程访问网络设备的服务器,充其量就是看一下后台。
- 这样就造成了自己的机器已经变成傀儡机了还不知道呢。
- 如何打傀儡机
- 一般都是比较常见的漏洞
- 或者是设备存在的CVE漏洞
- 反打的时候探测到了设备指纹直接找漏洞一个一个试就行
- 一般情况攻击者能进去你也能,除非攻击者搭进去之后买家更新固件,那只能算你倒霉。
- 有人说通过IP查域名,域名查注册信息,或者通过攻击者的web漏洞进行反打。
- 但是想想黑客用自己的服务器打你,会犯这种低级错误
- 人家会给你开个Tomcat后台给你个弱口令或者给你留个命令执行漏洞
- 如果是钓鱼网站可能通过域名反查还有戏,但是这种情况太少见了
- 自己想想,你能查到几个菠菜网站的注册人记录
- 但是想想黑客用自己的服务器打你,会犯这种低级错误
- 若是大家很轻松的就发现攻击者服务器的漏洞,大家也要谨慎一下,别踩进人家给你刻意留的陷阱
- 案例
https://www.freebuf.com/articles/web/322034.html
八、恶意样本分析-webshell反打
- 这个是比较靠谱的
- 攻击者留下webshell后门后,通常情况很少再去特意打开看看代码有没有被篡改
- 当然了webshell反打只适用于有文件落地的,不适用于内存马这种特殊的
- 可以在webshell文件里插入我们构造的代码,用来远程拍照、获取IP地址甚至是经纬度信息
- 注意了,IP地址、经纬度信息的准确性也有待确定
- 因为这一切的前提是攻击者直接用自己的网路远程操作webshell才行
- 否则我们获取的IP地址一样是跳板机的
1.示例代码,获取拍照
-
<html> <head> <script> function takePhoto() { // 获取video元素 const video = document.getElementById("video"); // 创建一个canvas元素 const canvas = document.createElement("canvas"); // 设置canvas元素的大小 canvas.width = video.videoWidth; canvas.height = video.videoHeight; // 将video图像画到canvas上 canvas.getContext("2d").drawImage(video, 0, 0); // 将canvas元素转换为图片并显示 const image = new Image(); image.src = canvas.toDataURL("image/png"); document.body.appendChild(image); } </script> </head> <body> <!-- 创建一个video元素 --> <video id="video" width="640" height="480" autoplay></video> <!-- 创建一个按钮,点击拍照 --> <button onclick="takePhoto()">Take Photo</button> <!-- 请求访问用户的摄像头 --> <script> // 创建一个MediaStream对象 const stream = navigator.mediaDevices.getUserMedia({ video: true }); // 将MediaStream对象绑定到video元素上 stream.then(function(mediaStream) { const video = document.getElementById("video"); video.srcObject = mediaStream; }); </script> </body> </html>
- 塞进去就改吧改吧就可以获取攻击者照片,前提是人家用的不是虚拟机,蛮鸡肋的
2.示例代码-攻击者访问webshell后自动获取攻击者访问的时间、ip
-
<?php $ip = $_SERVER['REMOTE_ADDR']; echo "Your IP address is: $ip"; $ip=get_real_ip(); $dat=date('Y-m-d H:i:s',time()); $a=$dat.' '.'文件名称:'.' IP:'.$ip."\n"; $myfile=fopen("testfile.txt", "a+"); fwrite($myfile, $a); fclose($myfile); function get_real_ip() { $ip=FALSE; //客户端IP 或 NONE if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; } //多重代理服务器下的客户端真实IP地址(可能伪造),如果没有使用代理,此字段为空 if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']); if ($ip) { array_unshift($ips, $ip); $ip = FALSE; } for ($i = 0; $i < count($ips); $i++) { if (!eregi ("^(10│172.16│192.168).", $ips[$i])) { $ip = $ips[$i]; break; } } } //客户端IP 或 (最后一个)代理服务器 IP return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); } ?>
- 用来获取攻击者访问时间、ip,而后会在本地生成日志文件
3.示例代码-经纬度查询
-
但是现在经纬度查询需要申请白名单,也就是不好使了
-
非白名单是没有办法获取别人经纬度的,这就很难受了
-
<?php echo $_SERVER['HTTP_HOST']; $getIp=$_SERVER["REMOTE_ADDR"]; echo 'IP:',$getIp; echo '<br/>'; $content = file_get_contents("http://api.map.baidu.com/location/ip?ak=自己去申请一个&ip={$getIp}&coor=bd09ll"); $json = json_decode($content); echo 'log:',$json->{'content'}->{'point'}->{'x'};//按层级关系提取经度数据 echo '<br/>'; echo 'lat:',$json->{'content'}->{'point'}->{'y'};//按层级关系提取纬度数据 echo '<br/>'; print $json->{'content'}->{'address'};//按层级关系提取address数 echo $json->{'content'}->{'address_detail'}->{'city_code'}; print_r($json); ?>
九、样本逆向分析
- 适用于大家获取到恶意样本
- 样本可以是webshell/可执行程序、甚至是钓鱼邮件等。
- 实际上分析webshell的效果不是很理想
- 一般webshell都是网上随便找的,很少有人自己写了
- 所以从webshell里找到有用的东西不太容易
- 很多时候是从可执行文件入手
- 但是一些可执行文件加密、混淆甚至是加了壳,这就对逆向分析人员有着很高的要求
1.在线威胁情报平台
- 奇安信威胁情报中心:
https://ti.qianxin.com/
- 微步在线:
https://x.threatbook.cn/
- 360威胁情报中心:
https://ti.360.cn/#/homepage
- VenusEys威胁情报中心:
https://www.venuseye.com.cn/
2.案例分析
1).获取样本后第一步
- 放到威胁平台看一下,有没有已经被分析过了。
- 要注意,一手情报别外泄了,所以威胁情报平台有利也有弊。
2).分析样本文件
-
该恶意文件调用本地systeminfo收集本地敏感数据
- 存储至数据库文件并上传至指定地址
- 如下图所示
-
发现该恶意文件调用注册表备份文件修改注册表
- 涉及文件为1.reg文件,来达到修改MySQL驱动文件调用的目的
-
调用系统文件,为恶意文件修改权限,以躲避杀软主动查杀
-
发现此恶意文件在执行完注册表修改操作后
- 访问
http://down.xxxxx.com/xx
地址,获取恶意文件xx.exe,下载至本地
- 访问
-
发现该恶意文件能识别杀毒软件
- 包括:腾讯管家、360、金山等行为
- 通过识别此类杀毒软件来判断是否存在杀软,而后进行下一步操作
-
该恶意文件有识别计算机系统版本信息功能
- 通过判断计算机系统版本信息进行下载对应的恶意程序。
-
未成功溯源,发现太晚了,样本下不了,且客户现场依然是并没有任何设备,没有日志
十、钓鱼邮件样本分析
- 钓鱼邮件千奇百怪
- 冒充Boss直聘加好友发钓鱼PDF的
- 冒充QQ邮箱盗号的
- 冒充VPN骗账号的
- 甚至还有直接进校园群明目张胆发VB考试.exe文件的,不怕死的很多。
- 拿到样本进行分析
- 通过域名反差、反打、反钓鱼、PE格式查询、PDF逆向分析都是有机会找到人的。
- 可以看看发件人信息,有没有可用的
- 通过域名反差、反打、反钓鱼、PE格式查询、PDF逆向分析都是有机会找到人的。
- 有幸见过一次反钓鱼,攻击者微信加好友,你给我发我给你发
- 很多攻击者发钓鱼邮件,都喜欢夹一个PDF来混淆视听,而这个PDf如果是他自己写的,那么可能就泄露出来东西了。
- 分享几篇通过这种钓鱼文件溯源的文章
- 通过lnk样本进行攻击溯源
https://www.freebuf.com/articles/network/349868.html
- 通过PDF文件信息进行攻击溯源
https://www.freebuf.com/articles/network/351431.html
- 通过时间与时区溯源
https://www.freebuf.com/articles/network/351348.html
- 通过压缩文件溯源攻击者信息
https://www.freebuf.com/articles/network/341745.html
- 通过分析样本组合进行溯源
https://www.freebuf.com/articles/network/352952.html
- 通过PE中的“富签名”进行攻击溯源
https://www.freebuf.com/articles/network/349867.html
- 通过lnk样本进行攻击溯源
十一、攻击者画像-攻击行为推演结果
-
其实这是最后一步
-
第一步获取到攻击者的初步信息
- 包括攻击开始时间
- 攻击结束时间
- 攻击过程使用的源IP
- 攻击的目标
- 攻击的漏洞
- 攻击的次数
- 攻击成功事件及服务器情况
-
这就构造出了初步的攻击者画像
-
案例假设
-
攻击开始时间 2023-2-5-00:01:01 攻击结束时间 2023-2-5-00:30:56 攻击源IP xxx.xxx.xxx.xxxxxx.xxx.xxx.xxx 攻击目的IP xxx.xxx.xxx.xxxwww.xxx.com 漏洞利用情况 SQL注入:xx次命令执行:xx次反序列化:xx次 攻击成功事件 xxx服务器命令入漏洞利用成功 服务器失陷情况 xxx.xxx.xxx.xxx服务器失陷
-
-
通过以上信息,我们算是可以交差交一半了
- 常规的溯源加上入口点和加固建议就可以交差了
- 而剩下的攻击者画像,那就是要求高的,也是得碰运气了
十二、攻击者画像
-
这一步很难,需要运气,同时还需要过硬的人品
-
如果我们反打成功,这无异于是对我们技术的肯定,也会获得极为强烈的满足感。
-
例如
- 我们溯源到对方服务器有一个关键文档:xxx公司xxx系统攻防演练报告
- 有时候只是服务器被反打还真就不一定会被逮到
- 但是你有这个文件在就尴尬了,除非你是想祸水东引,搞离间计,否则基本完蛋
-
然后通过一些信息找人
-
姓名 性别 年龄 身份证号码 手机号码 邮箱号码 工卡号 单位 家庭住址 社交账号
-
-
这种情况其实还是很普遍的,如果安全意识不强,很有可能就被溯源到
-
-
工作中,被溯源到的原因大致分为以下几种:
-
1. 踩点前使用真实IP物理机去踩点,留下了过多的访问记录 2. 信息收集使用的搜索引擎非匿名,存在大量记录 3. 使用的脚本有自己的签名信息,如:by xxx 4. 乱发朋友圈,项目保密环节未做好 5. 项目文件发送过于随意,项目文件明文展示并且未加密 6. 在群内吹水,电脑微信开启自动下载文件,直接被钓鱼 7. 代理不稳定,挂掉了还在用,自己的物理地址直接就暴露了 8. 使用带有后门的工具箱,被人摘了桃子 9. 虚拟机与物理机不分开用,没有做到一个项目一个虚拟机,并在虚拟机内留下自己的账户信息,如邮箱、浏览器账户、甚至是项目文件 10. 反侦察意识不强,踩蜜罐
-
十三、演练防溯源小技巧
- 网络层次
- 实际上攻防演练的时候正规的规矩是不能上匿名网络的,那在不适用匿名网络的前提下,如何更好的做好自身防护
- 前期踩点
- 不建议大家用自己的物理机去踩点
- 比如
- 前期的信息收集工作。
- 存活探测工作,直接上物理机框框扫,这可能不是red干的活。
- 可能是下面的二线三线干的活,但是也增加了暴露的风险。
- 而大多数被溯源的攻防选手,其实也不见得就是IP泄密
- 而是踩到了蜜罐,或者是在机器上留了不该留的东西。
1.防溯源
- 使用虚拟机做攻防,用完一个删一个,这样不会留下太多的数据。
- 做好物理机的防护,防止虚拟机被人拿了逃逸出来。
- 工作报告、日志不要在工作虚拟机中复用,坚持一机一用,别嫌麻烦。
- 演练的时候别用来路不明的工具,那里面可能有马。
- 任何攻防演练的虚拟机都不要留任何个人相关的信息、账户,浏览器最好用隐私模式,别登录,特别是水印问题。
- 实在不行可以在虚拟机里留点别的,比如说其他公司的报告,死道友不死贫道,混淆视听。
- 大家在使用虚拟机做测试时
- 虚拟机里留下的个人信息是别人的不是自己的
- 或者干脆没有个人信息
- 那么蜜罐的作用除了拿到你的IP作用也就不大了
- 因为大多数的蜜罐都是用过JSONP劫持的方式获取个人ID
- 这个ID可能是手机号,可能是邮箱号
- 能拿到什么,取决于你的测试机器里有什么,为什么说用完一个删一个
- 因为可能你自己都不知道自己的账户信息可能保存在机器的内存里面了
- 能力强的可以做一个U盘内存启动的镜像,用完U盘一拔数据直接就没了,谁来也没用。
- 建议大家留一个假的信息
- 在攻击测试机上留一个虚假的弱点。
- 若是这个弱点被人动了,那么就说明存在暴露风险,提前预警了。
- 不是喜欢反打吗,测试人员也可以下一个“蜜罐”,你来踩我就GG。
- 重点就是如何不被通过社交账号被逮住打死
- 能不用热点就不用热点,因为热点踩蜜罐百分百手机号被扒出来
- 除非你的手机号也是匿名的并且没有绑定任何的东西
- 大多数人被逮住都是泄露了邮箱、手机号、微信号等
2.为了给溯源人员增大阻力,大家应该怎么做好个人的隐私保护
1).某宝关闭好友权限,特殊时期关闭所有的加好友方式
- 这样即使他们找到了手机号,也不能通过手机号找到你的支付宝
- 因为支付宝里面有很多的小技巧可以直接拿到你的真实姓名
-
- 为什么说关闭此几项?因为默认情况下向好友是公开真实姓名的
- 而有时候大家莫名其妙的收到转账1分钱的时候大家就要小心了,人家来踩点了,转账会显示一部分名字的。
2).关闭微信及QQ相关功能
- 关闭QQ空间、朋友圈陌生人查看权限、关闭通过手机号找人功能
- 把这几个玩意关了,我相信风险最起码降低了一半。
- 很多小伙伴都是被从QQ空间看到了长相、地址信息,所以别瞎秀自己的长相。
3).手机号,这是一个越不过去的坎儿
- 记得以前拿着手机号去柜台人工充值的时候,是能看到对方绑定的身份证的名字的
- 这就很尴尬了
4).CSDN等社交平台关闭微信相关ID、起名字别用QQ号,你等着别人社工库查你吗
5). 关于使用虚拟机的问题,请将时区、语言等设置为与代理相同的时区
- 当然了,纵使你使用了很强的代理、TOR,依然有被溯源的可能
- 因为你攻击别人的时间是无法隐匿的,别人可以通过时区溯源法进行溯源,获取代理池当天的代理出口地址,找到对应时间的IP地址一个一个筛也筛出来了。
- 同样,最好是使用KVM/VX产品,因为VM产品需要安装tools工具,小心虚拟机逃逸啊
6).从目标机器下载文件,请存放在专门的虚拟机里,断网浏览
- 因为这个文件里可能有东西,你不断网一瞬间你的小秘密就没了,和蜜罐一个道理,同时如何传输这个文件也是个值得考究的话题。