恶意样本溯源法

news2024/11/23 14:56:30

恶意样本溯源追踪主要去了解攻击者或者团队的意图;(有因才有果,这里主要是通过分析结果,去了解攻击者的意图,比如:政治,私怨,业务,经济等)。

了解攻击链

恶意攻击的活动大概有如下7步骤:

  • Reconnaissance:侦查,充分的社会工程学了解目标。
  • Weaponization:定向的攻击工具的制作。常见的工具交付形态是带有恶意代码的pdf文件或office文件。
  • Delivery:把攻击工具输送到目标系统上。APT攻击者最常用这三种来传送攻击工具,包括邮件的附件、网站(挂马)、USB等移动存储。
  • Exploitation:攻击代码在目标系统触发,利用目标系统的应用或操作系统漏洞控制目标。
  • Installation:远程控制程序的安装。使得攻击者可以长期潜伏在目标系统中。
  • Command and Control (C2) :被攻破的主机一般会与互联网控制器服务器建立一个C2信道,即与C2服务器建立连接。
  • Actions on Objectives:经过前面六个过程,攻击者后面主要的行为包括:
  • 偷取目标系统的信息,破坏信息的完整性及可用性等。
  • 进一步以控制的机器为跳转攻击其它机器,扩大战果。

追踪溯源方法

恶意样本的追踪溯源需要以当前的恶意样本为中心,通过对静态特征和动态行为的分析,解决如下问题:

  • 谁发动的攻击?攻击背景是什么?
  • 攻击的意图是什么?
  • 谁编写的样本?
  • 样本使用了哪些攻击技术?
  • 攻击过程中使用了那些攻击工具?
  • 整个攻击过程路径是怎样的?

恶意样本追踪溯源可以采取如下方法:

域名/IP

这种溯源方法是最基本的方法,通过对攻击者使用的域名和IP地址进行分析,挖掘攻击源头。

查询域名的whois信息,可以关联到攻击者部分信息,注册名,注册邮箱,注册地址,电话,注册时间,服务商等。

下面是通过样本分析对域名进行溯源分析的典型案例:

案例1:

Checkpoint经过细致分析后,最终归纳出一个首要嫌疑犯,即昵称为“Nexxus Zeta”的一个犯罪分子,原因在于攻击者在注册僵尸网络的某个C&C域名(nexusiotsolutions.net)时,所使用的邮箱地址包含相关信息。

该邮件地址(nexuszeta1337@gmail.com)与C&C域名有一些交集,因此怀疑这个地址并不是一次性邮件地址,可以根据该地址来揭晓攻击者的真实身份。当搜索Nexus Zeta 1337时,在HackForums上找到了一个活跃的成员,该成员的用户昵称为“Nexus Zeta”,自2015年8月起已经是HackForums的一份子。虽然这个人在这种论坛上活跃度很低,但他发表了几篇帖子,从这些帖子中并没有发现他的专业水平有多高。不过有趣的是,他最近关注的是如何建立起类似Mirai的IoT僵尸网络。

“NexusZeta”在社交媒体上也颇为活跃,主要是在Twitter以及Github上,他在这两个平台上都公布了自己的IoT僵尸网络项目。实际上,这个人还将其Github账户关联到前面提到的某个恶意域名(nexusiotsolutions.net)。分析人员也找到了他所使用的Skype以及SoundCloud账户,使用人名为Caleb Wilson(caleb.wilson37 / Caleb Wilson 37),然而无法确定这个名字是否就是其真实姓名。

样本分析及详细的溯源分析内容可参考链接:https://research.checkpoint.com/good-zero-day-skiddie/ 。

案例2:

样本分析过程中,通过网络抓包,获取到攻击者的控制域名信息:

域名信息关联后,如下图所示:

这里点到为止,对上述信息进行进一步分析后,最终可定位到攻击者本人,并且最终成功接管攻击控制的域名。

案例3:

通过分析获取到的样本,该样本为downloader程序,主要通过下载恶意软件之后运行,下载的IP地址如下所示:

对该IP进行渗透测试,最终获取到主机权限,通过对攻击者掌握的主机进行深入分析,最终定位到攻击者相关信息。

入侵日志

这种溯源分析方法偏向于主机取证分析,攻击者在入侵到主机后的行为分析。

对攻击者留下的大量操作日志进行分析后,可以提取相关攻击者的信息。

  1. 连接服务器使用VPS信息。
  2. 登陆主机后,一般为了维持对主机的访问权限,会尝试创建自己的账号及密码。
  3. 攻击者为了偷取数据,使用的ftp或者数据服务器信息。
  4. 通过对攻击者的登陆时间进行分析,可以基本定位所在大区域(北半球,南半球)。
  5. 登陆主机后的操作模型,不同的攻击者,入侵成功后进行的行为有差异,每个人都有自己的行为指纹特征。

简单举个例子,不少攻击者习惯使用自动化的工具,去提取主机上的敏感信息(网站,邮箱,比特币,网银等账号密码),入侵成功后(钓鱼,社工,水坑攻击等),会在受害者机器上安装间谍软件,进行主机行为监控,并且定时将截获的敏感信息上传到服务上。

大多使用三种通信方式窃取敏感信息:ftp,smtp,http。

案例1:

通过分析入侵日志,最终分析其留的监控程序,溯源分析的案例,该样本中攻击者使用加密的smtp服务器窃取敏感信息,在样本分析过程中可以获取到邮箱的用户名与密码:

利用获取到的登陆凭证可成功登陆攻击者邮箱:

在邮件内容中,发现了攻击者的真实邮箱,之后通过进一步溯源分析,定位到了攻击者。

下图是攻击者真实的twitter账号:

案例2:

攻击者在入侵成功后,留下的启动脚本中包含了攻击者的个人网络id,通过对该网络ID及QQ号码进行溯源分析,最终也成功定位到攻击者。

QQ: 2228668564ID: icnanker
shadow: icnanker:$6$EIZwhnAX$m/IclCqhsFOBaZEgT2mVCYFy5bKH75rJ8Rlh/hwGs7DeR5AovmhrLS.V3naL6oizn6FCViwqKn6k9gqmoYNhs0:16866:0:99999:7:::

全流量分析

某些攻击者或者组织的反跟踪意识非常强,基本上不会留下任何痕迹,在达成入侵目的之后(窃取数据),会完全清除入侵痕迹,或者干脆销毁主机硬盘。

例如:2015年乌克兰电厂遭受攻击之后,攻击者利用killdisk组件销毁了全部数据。当然有些也不会留下在主机上的任何操作痕迹,部分勒索软件也是通过同样的手段进行痕迹擦除。

这类案例也非常多,基本上在受害者机器上找不到任何痕迹,这时进行全流量分析溯源就相当有效了。

例如:以2017年Flareon 4th逆向挑战赛最后一题为例:

描述了一个APT攻击场景,需要通过分析数据包及PE文件,还原整个攻击过程。

从网络下载加密的恶意代码在本地进行解密:

解密后的内容为一个远控端,其和主控端的通讯流量通过了全加密,网络传输数据格式如下:

相关的加解密及功能模块如下:

通过流量分析发现攻击者入侵行为如下:

  1. 黑客入侵到168.221.91后,先获取了屏幕截图(内容包含了一个密码)。
  2. 查看c:\work\FlareOn2017\Challenge_10\TODO.txt,发现larry相关提示(根据前期信息收集结果,可以知道johnson主机名)。
  3. 通过ping命令获取到内网johnson主机IP地址(192.168.221.105)。
  4. 使用psexec在johnson的主机上安装后门srv2.exe(监听本地16452端口)。
  5. 之后通过内网代理连接该后门,通过代理插件上传加密模块到了johnson的主机上c:\staging\cf.exe。
  6. 利用加密程序(exe)对lab10的文件进行加密,之后将原始文件删除,并且通过代理传到了黑客手里。

该案例中仅通过全流量分析,最终还原整个入侵过程、黑客攻击行为以及窃取的内容,而在真实的环境中需要结合入侵日志进一步对恶意样本攻击进行追踪溯源。

同源分析

该方法主要为在获取到恶意样本后,很难第一时间关联到攻击者或者恶意样本提供者的信息,但是可以通过和历史恶意代码进行相似度分析,获得历史攻击事件,从而关联到相应的组织或团体。

这种溯源方法多用于定位APT组织或者某些知名的黑客团体(方程式)的行动,需要投入大量的人力,时间去完成溯源跟踪分析。

APT组织或者知名黑客团队,一般都有各自的工具定制开发部门,负责各类工具的开发,以及漏洞利用工具的量产(从今年4月份泄露的方程式组织内部的工具以及CIA泄露的部分文档就可以看出端倪)。其部分划分组织架构都非常清晰,有专门负责工具开发的部门,例如:远控开发部门,硬件研究部门,漏洞挖掘部门,漏洞利用工具编写的部门等。

设计思路

每个程序员在软件实现的时候,会使用自己比较熟悉的一套代码风格和实现算法,每个团伙或者组织在攻击目标时也会有一套自己特有的攻击方法,针对恶意样本可以通过行为日志的相似度、代码混淆风格以及相关的实现算法进行同源判定。

例如:利用“破壳”漏洞投放的6个Bot具有同源性。

图片来源:

http://www.antiy.com/response/Analysis_Report_on_Sample_Set_of_Bash_Shellshock.html

编码特征

程序员在开发过程中,经常会复用部分现有代码(加密算法,功能模块),以提高开发效率。

样本分析人员通过跟踪分析某组织的大量攻击样本后,对其工具开发人员的编码风格(函数变量命名习惯,语种信息等),编程习惯有了深入了解。在此基础上,就能够通过编码风格准确溯源到相关组织。

下面是今年5月份爆发的wanncry蠕虫的溯源分析的案例:

https://blog.comae.io/wannacry-links-to-lazarus-group-dcea72c99d2d

Google研究者Neel Mehta在Twitter率先发布消息称,早期的WannaCry样本与Lazarus团伙使用的一款后门程序Contopee存在较高相似度。稍后卡巴斯基和赛门铁克研究者基于此发布了更多分析结果。

并且给出了代码相似度对比的图,以证明其推论:

通讯协议

每个恶意样本为了和之前的版本通讯协议进行兼容,一般会复用之前的通讯协议代码,通过跟踪分析通讯数据的格式特征进行同源判定。

Billgates上线数据格式

Xitele上线数据包格式

通过对比上面两个恶意样本上线包数据格式特征可以判定其为同源样本。

数字证书

数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。

数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即CA中心签发的证书,也可以由企业级CA系统进行签发。

恶意软件为了躲避安全软件的检测,会使用数字证书对代码进行签名,而签名证书中的颁发给部分包含了软件的开发商的相关信息。

攻击模型

这种溯源方法主要见于某些专业化程度比较高的个人或者组织,他们有自己的攻击常规套路,并且长期专注于一个领域的攻击。

案例1:

之前的一次应急分析过程中遇到一个团伙,主要进行ssh弱口令爆破,该团队的就主要关注于ssh弱口令爆破,通过对该团队的溯源分析,了解到其攻击模型是:

  1. 扫描全网开放ssh服务端口的主机。
  2. 根据开放服务端口号,将每个端口号对应的ip保存到一个文件中。
  3. 并且定时的会对全网全端口进行扫描探测以便及时更新攻击目标数据。
  4. 对存在ssh弱口令的主机进行攻击。
  5. 利用成功入侵的主机作为节点,继续进行ssh弱口令爆破。
  6. 旨在构造一个大型的botnet系统。

除上面该实例外,还遇到不少,利用单一漏洞进行攻击的案例,如:struts2框架漏洞以及近期发现某团队利用webloglic WLS漏洞进行入侵挖矿的案例。

案例2:

下面举一个最有名的例子,2016年10月爆发的Mirai僵尸网络曾经一度使互联网产生恐慌,通过溯源分析最终定位到了该僵尸网络的作者。

Mirai僵尸网络就是一个很好的例子,攻击者主要利用物联网设备默认口令的问题,感染大量设备,之前沟通对其攻击模型的匹配,可以清楚的了解的组织的活动轨迹,并且通过对每一次活动留下的线索进行关联分析,最终定位到了攻击者团伙。

美国司法部最终披露称,三名男子就创建Mirai恶意软件并利用Mirai僵尸网络攻击多个目标的事实表示认罪。从法庭文档来看,这三名男子的名字是Paras Jha、Josiah White和Dalton Norman。

https://www.bleepingcomputer.com/news/security/us-charges-three-men-with-creating-and-running-first-ever-mirai-botnet/

案例3:

在一次应急响应中通过取证分析,了解到攻击使用的攻击模型如下:

  1. 注册域名,根据攻击目标选择有意义的域名。
  2. 在GitHub上注册一个新账户和创建一个开源项目。
  3. 编译源码后捆绑恶意软件,一般选择advanced installer作为捆绑打包器(还有AutoIt,NSIS)。
  4. 发布到搭建的网站上。
  5. 在互联网上发布推广其软件。
  6. 窃取用户敏感数据(账号密码)。
  7. 进行数据直接套现,或者通过信息倒卖平台间接变现。

之后利用该攻击模型对样本库中的文件进行筛选,定位到另外3套与该模型完全匹配的案例,进一步分析匹配到的样本后,首先确认了该4套样本出于同一开发团队,经过溯源分析准确定位到了攻击者。

转自:恶意样本分析手册–溯源篇 – 绿盟科技技术博客 (nsfocus.net)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1592280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

tkinter窗口组件Entry

from tkinter import * 创建主窗口 app Tk() 设置窗口大小为1040x2048(手机) app.geometry(“1040x2048”) 设置窗口背景为灰色 app.configure(bg“gray”) 定义一个函数text(),用于处理输入框内容的变化 def text(): # 获取输入框e1的内容 if e1.get() “…

JVM之JVM的基本介绍

基本介绍 JVM:全称 Java Virtual Machine,即 Java 虚拟机,一种规范,本身是一个虚拟计算机,直接和操作系统进行交互,与硬件不直接交互,而操作系统可以帮我们完成和硬件进行交互的工作 特点&…

【计算机毕业设计】停车场管理系统——后附源码

🎉**欢迎来到琛哥的技术世界!**🎉 📘 博主小档案: 琛哥,一名来自世界500强的资深程序猿,毕业于国内知名985高校。 🔧 技术专长: 琛哥在深度学习任务中展现出卓越的能力&a…

Chatgpt掘金之旅—有爱AI商业实战篇|虚拟助理|(九)

演示站点: https://ai.uaai.cn 对话模块 官方论坛: www.jingyuai.com 京娱AI 一、AI技术创业在虚拟助理业务有哪些机会? 人工智能(AI)技术作为当今科技创新的前沿领域,为创业者提供了广阔的机会和挑战。随…

java项目之的网上报名系统(源码+文档)

项目简介 网上报名系统的主要使用者分为:管理员模块如下:首页、个人中心、考生管理、级别专业管理、报名信息管理、考生成绩管理、系统论坛、系统管理等。考生模块:首页、个人中心、报名信息管理、考生成绩管理等。前台首页:首页…

关于Ribbon在SpringCloudAlibaba2021.1版本中,找不到服务实例

关于Ribbon在SpringCloudAlibaba2021.1版本中,找不到服务实例 放个妹子 SpringCloudAlibaba在2021.1版本中,spring-cloud-starter-alibaba-nacos-discovery默认已经移除了ribbon模块 手动加上spring-cloud-starter-netflix-ribbon依赖后,项目能正常启动…

【程序分享】MD2D 程序:用于从分子动力学模拟中准确测定扩散系数的 python 模块

分享一篇用于从分子动力学准确测定扩散系数的 python 模块:MD2D 。 感谢论文的原作者! 主要内容 “通过将均方位移(MSD)拟合到爱因斯坦关系中,可以从分子动力学(MD)模拟中推导出自扩散系数。然而&#…

设计模式——外观(门面)模式10

外观模式:能为系统框架或其他复杂业务流程封装提供一个简单的接口。 例如抽奖过程中 设计模式,一定要敲代码理解 调用1(抽奖系统) /*** author ggbond* date 2024年04月08日 10:34*/ public class Lottery {public String getId…

使用 HBuilderX自动上传Uniapp 微信小程序代码

HBuilderX内置相关环境,开箱即用,无需配置nodejs。本文只介绍发布微信小程序的步骤。 1.下载和安装 HBuilderX hbuilder首页:https://www.dcloud.io/hbuilderx.html 下载hbuilder编辑器,选择对应的系统,Windows和mac正式版即可,下载后免安…

数字化时代:IT界的致富秘籍 —— 策略×态度×机遇

🌟 数字化时代:IT界的致富秘籍🚀 —— 策略态度机遇 在数字化浪潮中冲浪🏄‍♂️,IT行业犹如一片无限可能的蓝海。想要在这片汹涌的海洋中捕获财富,不是一件轻而易举的事。让我们一起深入探索,如…

判断系统是debian、centos、Ubuntu的命令

要确认自己的Linux系统是基于Debian的还是其他发行版,你可以使用几种不同的方法。以下是几种常见的方法: cat /etc/os-releaselsb_release -acat /etc/issueunmae -a os-release文件 cat /etc/os-release:这个文件通常包含了关于你的操作系…

云服务器环境web环境搭建之JDK、redis、mysql

一、Linux安装jdk,手动配置环境 链接: https://pan.baidu.com/s/1LRgRC5ih7B9fkc588uEQ1whttps://pan.baidu.com/s/1LRgRC5ih7B9fkc588uEQ1w 提取码: 0413 tar -xvf 压缩包名 修改配置文件/etc/profile 二、安装redis环境 方案一: Linux下安装配置r…

力扣HOT100 - 56. 合并区间

解题思路: class Solution {public int[][] merge(int[][] intervals) {// 先按照区间起始位置排序Arrays.sort(intervals, (v1, v2) -> v1[0] - v2[0]);int[][] res new int[intervals.length][2];int idx -1;for (int[] interval : intervals) {//直接加入的…

JS控制元素平滑滚动,页面自动滚动锚点实现

使用 scrollIntoView 实现元素内子元素的平滑滚动, 下面是模拟接口list返回,然后通过按钮切换下一个,页面就会滚动到响应的位置 具体 scrollIntoView 有一些其他参数来配置滚动的具体交换,网上去查即可 备注:下面的代码…

cocos creator 实现spine局部换装

1 使用3.7.4版本 2 js代码 3 c Native层修改源码

elasticsearch7安全配置--最低安全等级,用户名密码

上一篇博客在centos7上安装了elasticsearch7 接下来对elasticsearch进行安全方面的配置 minimal security 最低安全等级,用户名密码 首先开启xpack vim config/elasticsearch.yml xpack.security.enabled: true由于我是单机配置的,还加了如下配置 d…

小区烟火AI检测/楼道杂物堆积消防隐患AI智能识别方案

一、背景需求 据新闻报道,今年4月7日,安徽省合肥市肥东县一民房发生火灾,致1死11伤,起火点是“一楼楼道杂物间”。 因为小区居民楼楼道堆积大量杂物而导致的消防火灾事故也不在少数。楼道堆积杂物是一个长期存在的问题&#xff…

【MATLAB】GA_ELM神经网络时序预测算法

有意向获取代码,请转文末观看代码获取方式~ 1 基本定义 GA_ELM(Genetic Algorithm and Extreme Learning Machine)是一种结合了遗传算法和极限学习机的神经网络时序预测算法。它的核心思想是通过使用遗传算法来优化极限学习机的权重和偏差&…

刷代码随想录有感(30):有效的括号

经典题目&#xff0c;但是我写的出了些问题&#xff0c;题干如下&#xff1a; 我的代码&#xff1a; class Solution { public:stack<char> st;bool isValid(string s) {if(s.size() % 2 ! 0) return false;//利用字符串长度是否为奇偶进行剪枝操作for(char i : s){//遍…

CSS特效---百分比加载特效

1、演示 2、一切尽在代码中 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title&…