大家好,欢迎来到IT知识分享网。
目录
加密恶意流量发现
加密恶意攻击指令识别
加密代理流量分析
总结
加密恶意流量发现
- 背景 :加密流量
- 基础知识 :TLS
- 恶意软件流量特征 :TLS特征、会话特征、心跳等
- 加密恶意流量发现思路 :基于基础知识和恶意软件流量特征
- 工具介绍和使用 :Wireshark / tshark
- 案例分析 :经典赛事题目
心跳包:恶意软件每个一段固定时间向C&C服务器发送一个心跳包,以告知C&C服务器自己是否存活
1. 背景
2. TLS协议
- 保密(message privacy):通过加密所有传输信息,使得第三方无法嗅探;
- 完整性(message integrity):通过MAC(消息验证码),以防传输信息被篡改;
- 认证(mutual authentication):双方认证, 防止身份被冒充;
握手过程会产生三个随机数:
- 客户端随机数(公开)
- 服务端随机数(公开)
- pre-master(服务器公钥加密)
3. 恶意软件流量特征
(1)TLS协议特征
由于大部分恶意软件会复用同一个恶意软件的代码,因此许多恶意软件的 Client Hello 消息在一些特征上十分相似,如加密套件、扩展等。
1)Cilent Hello:
建立 TLS 连接的第一步是客户端向服务器端发送明文 Client Hello
消息,并将自己所支持的按优先级排列的加密套件信息和扩展列表发送给服务器端,这一消息的生成方式取决于构建客户端应用程序时所使用的软件包和方法。服务端反馈
Server Hello 消息,包含选择使用的加密套件、扩展列表和随机数等,这一消息基于服务器端所用库和配置以及 Client Hello
消息中的详细信息创建。

由上图可知:
1. 客户端提供的加密套件标识号中,19、50、56、5、4,这几个标识号在恶意流量中比较常见,正常流量中比较少见。
2. 服务器端选择的加密套件标识号中,49200、47、53、49161,这几个标识号在恶意流量中比较常见,正常流量中比较少见。
3. 客户端提供的加密套件个数中,12个、28个,在恶意流量中比较常见,正常流量中比较少见
2)扩展:
恶意加密会话客户端所使用的扩展数目多为 5 个,而正常会话的客户端扩展数目较为多样。
3)服务器证书:
4)域名信息:
(2)会话统计特征
流级特征 :流持续时间,流平均包长等特征。
包级特征 :包长,包数量等特征。
(3)心跳
恶意软件可能具有报活机制,恶意软件每隔固定时间会向C&C服务器发送心跳包,来证明失陷机器和C&C的连接还在。一般服务器是不会对心跳包进行响应的。
4. 加密恶意流量发现思路
流量审计:
- 会话统计特征:统计和观察源ip和目的ip之间的包数量
- TLS特征:
1. 域名是否可靠可用,使用第三方平台Alexa
2. 加密套件是否是弱加密套件,加密套件的数量是否可疑
3. 证书是否存在自签名的情况,certificate中issuer字段和subject字段是否一致,如一致则为自签名- 心跳特征:源ip和目的ip之间的通信是否存在规律,比如每间隔一个固定时间来进行通信,这种非常可疑。
主动探测:
主动访问C&C服务器,或许可以获取更详细的信息。
5. 工具介绍及使用
(1)wireshark:
1)过滤表达式:
协议过滤:
TCP : 只显示TCP协议的数据流
HTTP : 只显示HTTP协议的数据流
TLS : 只显示TLS协议的数据流
DNS : 只显示DNS协议的数据流
IP过滤:
ip.addr = x.x.x.x : ip为x.x.x.x有关的数据流
ip.src = x.x.x.x :源IP地址为x.x.x.x的数据流
ip.dst = x.x.x.x :目标IP地址为x.x.x.x的数据流
端口过滤:
tcp.port == 80,只显示80端口TCP数据流
udp.port == 67,只显示67端口UDP数据流
tcp.srcport == 80,只显示源地址80端口的数据流
tcp.dstport == 80,只显示目的地址80端口的数据流
连接符:
and, or
tcp.port == 80 and ip.addr =x.x.x.x
tip:如果不清楚过滤数据包的表达式,可以尝试以下方法:
1. 打开数据包
2. 根据自己的过滤需求,找到数据包上对应的字段
3. 右键点击该字段,选择 作为过滤器应用 -> 选中 ,这样就能自动生成过滤表达式了
2)协议分级:
统计 – 协议分级
3)会话:
统计 – 会话
4)I/O图标 (做心跳分析) :
统计 – I/O图标
1. 添加过滤表达式过滤出想要查看的ip
2. 使用I/O图标观察通信是否存在规律
(2)tshark(wireshark命令行版),以及常用的一些命令:
命令:
-r:要解析的pcap文件
-T fields:解析出的结果要以何种方式呈现
-e:要提取的字段
_ws.col.Protocol : 协议
tls.app_data :加密的应用数据
tls.handshake.type : 握手阶段
tls.handshake.ciphersuite : 握手时选择的加密套件
tls.handshake.extensions_length : 拓展长度
:要写入的文件
示例:
6. 案例分析
1. 导出所有client hello包,用wireshark的过滤器,然后导出csv
2. 统计一下涉及到的所有的域名(host),并按照数量排序
3. 对排名前20的域名在Alexa上进行搜索,观察他们的排名
4. 找到可能的恶意域名后,使用tls.handshake.extensions_server_name == 恶意域名这个过滤表达式将相关数据包找到
5. 使用I/O图标进行分析,发现有明显心跳
7. 分析该payload(可以从github上找一找有没有现成的分析工具),获得flag
加密恶意攻击指令识别
- 背景: 定位失陷机器和C&C后需要进一步分析
- 恶意流量指令特征: Cobalt Strike流量中不同指令的特点
- 加密恶意流量发现思路: 基于恶意流量指令特征
- 工具介绍和使用: Wireshark
- 案例分析: 经典赛事题目
1. 背景
在经过恶意加密流量发现过程之后,我们能够定位到失陷主机和C&C服务器,此时能够进一步分析恶意行为,比如尝试分析恶意软件使用了哪些指令来执行恶意行为。恶意软件可以选择不同的协议作为通讯载体。常见的通信载体如(HTTP,HTTPS),常见的指令比如(beat,sleep,file,shell,hash,screen)
beat:心跳指令
sleep:改变心跳的频率
file:获取失陷主机的文件目录结构,类似于ls指令
shell:执行失陷主机上的一些系统命令
hash:将失陷主机上的登录密码(hash加密)转储,攻击者可以对这些密码进行hash解密
screen:攻击者使用截图的形式将失陷主机当前屏幕截图,将截图回传给C&C服务器
- HTTP恶意流量攻击指令:虽然是以明文的形式传输,但是会模拟正常流量且隐藏恶意特征
- HTTPS恶意流量攻击指令:有效载荷被加密,难以直接分析
2. 恶意流量指令特征
(1)攻击环境搭建:
恶意软件,Cobalt Strike是一款团队作战渗透测试神器,分为客户端及服务端,一个服务端可以对应多个客户端,一个客户端可以连接多个服务端。
kali上安装方法:
apt install openjdk-17-jdk-headless
update-alternatives –config java
java -version
运行前,执行chmod 777 teamserver改变权限
注:例子中的192.168.230.136充当的是CS(CS可理解为C2服务器)的角色;客户端可以使用其他的主机来连接192.168.230.136,作为攻击者(比如192.168.230.138)
- CS(C2服务器):192.168.230.136(linux kali)
- 攻击者:192.168.230.138(linux kali)
- 失陷主机: 192.168.230.134(window 10)
第一步:服务器运行teamserver命令 ./teamserver server_ip password
注:这里的server_ip为CS的服务器端,连接攻击者(一般为本机外网ip或域名);
password为攻击者连接需要的密码,可自设。
例如:./teamserver 192.168.230.136
第二步:攻击者客户端连接 ./cobaltstrike
Host:CS的服务器端ip(第一步中的server_ip)
Port:默认50050
User:用户名
Password:连接密码(第一步中的password)
第三步:HTTP载荷生成
(1)添加HTTP Listener(用于攻击者监听C2服务器上的某一个端口,看看是否有失陷主机与C2服务器连接)
(2)生成后门
(3)运行后门并执行命令
将artifact.exe移植到失陷主机(192.168.230.134)上,双击运行。
(4)抓包分析
beat命令
在攻击者主机(192.168.230.138)上运行wireshark进行抓包,由于设置的心跳时长为10s,可以发现失陷主机(192.168.230.134)与C2服务器(192.168.230.136)每隔10s进行一次
通信(可以查询到192.168.230.136的流量是因为设置了HTTP Listener)
特点:时间上有规律;无POST包
sleep命令
sleep 5:修改心跳时间为5s
特点:改变时间规律;无POST包
screenshot命令
screenshot:屏幕截图
特点:双向大content-length
hashdump命令
hashdump
特点:POST回传包比响应包1要小得多,单向大content-length
file命令
右键explore -> file browser
特点:回传包length相对较大
shell命令
shell whoami
特点:回传包length相对较小
(2)HTTP-C2通信原理
流程为:
1. 失陷主机首先向CS发送心跳包,告知攻击者该失陷主机存活情况
2. 攻击者通过CS向失陷主机发送GET请求,给失陷主机发送任务
3. 失陷主机将结果返回给CS,再由CS传给攻击者 (根据指令决定是否有第三步,如beat、 sleep指令就没有第三步)
(3)HTTP指令特点
1)beat
特点:
- 报活包具有明显的时间规律
- 心跳包过程中没有post回传数据
2)sleep
特点:
- 执行完sleep命令后,心跳间隔会随之变化
- 没有post回传数据
3)screenshot
特点:
- 响应包1和回传包的content-length都很大;即双向大content-length
4)hashdump
特点:
- 响应包1的content-length比回传包的content-length大很多,即单向大content-length
5)file
特点:
- 回传包的length较大
6)shell
特点:
- 回传包的length较小
length:数据包整体长度
content-length:数据段的长度
3. 案例分析
案例描述:
现提供了一段时间的失陷主机的HTTP通讯流量(pcap文件),需要通过分析恶意软件通讯流量,从而在通信流量中得出下发的指令序列。
提示:
- 已定位到C2服务器的域名是 (d2o3aua148sv.cloudfront.net);
- 指令包括(sleep,file,shell,hashdump,screenshot);
- 共包含50个指令;
1. 用wireshark打开数据包
2. 根据C2服务器域名,使用规则过滤出与之相关的流量
http.host == d2o3aua148sv.cloudfront.net
ip.addr == 18.65.190.184 and http(18.65.190.184是C2服务器的ip地址)
4. 将筛选出来的流量包导出为csv文件以供分析(文件 -> 导出分组解析结果 -> As csv)
5. 流量分析
(1)因为前面的数据包都是没有POST包的,因此有可能是beat和sleep包,所以首先关注时间信息,发现前面的数据包都是以5s为间隔的beat包
(2)然后根据上面统计的那几种指令的特点对流量进行分析即可。
加密代理流量分析
- 背景: 加密代理流量
- 加密代理流量特征: 包级特征、流级特征、TLS阶段特征等
- 加密代理流量分析思路: 特征提取+模型训练+效果评估
- 工具介绍和使用: python、sklearn、tensorflow
- 案例分析: 经典赛事题目
1. 背景
- 不同恶意家族可能使用不同的恶意软件通过加密代理进行通信,访问恶意网站或正常网站,因此不同的恶意软件在通信流量上的特点呈现出多样性;
- 分析不同的加密代理产生的流量特点有助于识别不同的恶意家族,对于追踪溯源、恶意家族画像有重要作用;
- 现有研究多基于包级特征、流级特征、TLS信息特征等多维度特征进行分析,通过特征提取、训练模型的方式构建分类器,来达到加密代理分类的目的。
2. 加密代理流量特征
包级特征: 由于数据分组大小与网络服务有关且不受加密技术的影响,因此可以根据数据分组的分布对加密流量进行识别;可以关注包长分布特征;
包长分布特征:最大包长、最小包长、平均包长、中位数包长等信息;
流级特征: 通过五元组(源IP,目的IP,源端口,目的端口,协议)确定数据流; 加密流量只是对数据包的载荷进行加密
,对流的特征属性的影响较小,因此可以根据流量的属性如传输速率、流中包数量、持续时间等提取相应的流量特征;
总体:传输速率,持续时间等;
前向:前向传输速率,前向包数量等;
后向:后向传输速率,后向包数量等;
TLS特征:
域名:域名信誉度
证书:是否自签名、有效期等
3. 加密代理流量分析思路
4. 工具介绍和使用
环境基础工具:Python,Anaconda ,(jupyter,colab);
特征提取工具: Wireshark导出, python下dpkt库,Zeek工具;
构建模型工具:python下sklearn库,tensorflow库,或其他分类器库,如pytorch;
wireshark导出csv文件:统计 – > 端点/会话 -> 点击复制,作为csv -> 复制到txt文件中 -> 修改文件格式为csv文件
5. 案例分析
案例分析:
本赛题提供的日志数据为两种不同的加密代理产生的流量,并对加密代理类别进行了标注。请根据提供的已标注的训练样本(samples.csv)进行分析和模型训练,使得模型可从有效区分样本属于哪一种加密代理。
分析思路:
特征分析与提取;构建模型;评估效果;
特征分析:
IP信息特征:
- 可以通过将srcIP和dstIP拼接,使用空格符号替换‘.’符号,将srcIP和dstIP分为8个单独的部分,如(172 16 107 162
10 69 135 33);然后使用gensim库下的word2vec算法将8个单独的部分分别转为N维的特征向量,最终对这8个N维的特征向量求平均,得到一个8维的IP信息特征;
- 使用word2vec的好处是,相似的输入通过word2vec后会输出相似的向量,最终通过求平均的方式,综合考虑了IP特征信息;
协议信息特征:
TLS版本信息,可以根据TLS版本提取一维向量,比如值为1代表TLS 1.1,值为2代表TLS 1.2, 值为3代表TLS 1.3;
证书信息特征:
C :国家 CN :公司名称 O:单位名称
L :城市 OU :显示其他内容 ST:地址
我们可以基于tlsSubject内容进行信息富化,比如单独分析C,L,O,CN,OU,ST这些信息以及tlsSubject和tlsIssuerDn中分别有多少个字段。针对C,L,O,CN,OU,ST,我们可以用6维特征表示,每一维特征分别对应每个字段的值在整体流量中出现的次数;针对tlsSubject和tlsIssuerDn中分别有多少个字段,我们可以用2维特征表示;
流级信息特征:
我们可以根据已有的流级信息,如bytesOut,bytesIn,pktsIn,pktsOut作为四维特征,同时进行信息富化,我们可以根据以上信息计算出进出字节以及进出包数量的一个比值,对应2维特征;
学习计划安排
我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~
这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!
如果你对网络安全入门感兴趣,那么你需要的话可以
点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
①网络安全学习路线
②上百份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥HW护网行动经验总结
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/157970.html