C2的一些隐藏策略与防丢失

  • A+
所属分类:安全文章

推荐一个repo:

https://github.com/alphaSeclab/awesome-rat.git

各种隧道,加密(icmp隧道/dns隧道/ssh隧道/http隧道)

我们先介绍一下 ICMP协议:

ICMP的内容是放在ip数据包的数据部分里传输的,ICMP是基于IP协议工作的,我们要区别于传输层,它仍然属于网络层协议。ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。重点关注 Checksum 字段和Data字段,因为我们改变Data字段的时候,Checksum也要改变,我们把我们的payload或者数据放到Data字段里面即可.我们分别使用,Linux和Windows测试一下, Linux ping 发出的Data的内容为 :!”#$%&’()*+,-./01234567 , Windows ping 的发出的Data的内容为abcdefghijklmnopqrstuvwabcdefghi.

一般攻击者会把Payload放到Data 字段里面,返回的内容也放到Data里面。下面抓包一个恶意软件,使用icmp隧道传输的:

C2的一些隐藏策略与防丢失

我们可以在 Data 里面可以看到一个ls:

C2的一些隐藏策略与防丢失

返回的系统目录数据是放到Data里面的。

简单介绍一下 DNS协议:DNS协议是一个应用层协议,用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址),类似一个分布式数据库,数据通过udp传输,IP报头中的协议字段值为17. DNS隧道抓包如下:

C2的一些隐藏策略与防丢失

我在被控机上抓包,如图,可以看出受控机器一直TXT请求 CentOS 控制机:

C2的一些隐藏策略与防丢失

可以看出我们的payload是 放到TXT字段里面,由CentOS 控制机响应给客户端的:

C2的一些隐藏策略与防丢失

然后,数据都分段放到子域名里面,分多次,再次用请求的方式,发送到我们的控制机器上了

可以看出DNS隧道的一些特征:

1, 请求的Type一般都是TXT(为了能够加入更多的信息)。

2, payload部分一般都会编码(可能为base64、2进制或16进制)后放到子域名里面,而且多变,不一致 3, DNS发生频率很高,短时间为了发送大量数据,会产生大量请求。

更多的内容,见本人的详细文章介绍,如下:

NIDS(suricata)中的ICMP隐蔽隧道检测

https://www.freebuf.com/articles/es/243486.html

NIDS(suricata)中的DNS隐蔽隧道检测

https://www.freebuf.com/articles/network/244094.html

DGA 算法

DGA是恶意程序所使用的一种DNS技术,用于隐藏C2服务器。恶意软件通常使用它们来逃避基于域名的防火墙、NIDS拦截。使用DGA的恶意软件将不断尝试连接生成的DGA域名列表里面的域名,直到完成C2通信。DGA算法最早是在2008年的Conficker恶意软件中发现的。Conficker的第一个变体(变体A)每天使用日期作为种子来产生250个不同的域名。后来FBI进行了报复,逆向了Conficker,并注册恶意软件使用的所有域(真的假的?)。随着Conficker恶意软件的发展,引入了另外4种恶意软件变体(从B到E),变体C每天生成超过50,000个域,从中随机选择仅500个域以尝试与C&C服务器进行通信。

C2的一些隐藏策略与防丢失

传统僵尸网络基础架构

C2的一些隐藏策略与防丢失

DGA僵尸网络基础架构

C2的一些隐藏策略与防丢失

DGA算法生成逻辑

Banjori DGA 域名生成算法

def map_to_lowercase_letter(s):    return ord('a') + ((s - ord('a')) % 26)
def next_domain(domain): dl = [ord(x) for x in list(domain)] dl[0] = map_to_lowercase_letter(dl[0] + dl[3]) dl[1] = map_to_lowercase_letter(dl[0] + 2*dl[1]) dl[2] = map_to_lowercase_letter(dl[0] + dl[2] - 1) dl[3] = map_to_lowercase_letter(dl[1] + dl[2] + dl[3]) return ''.join([chr(x) for x in dl])
seed = 'earnestnessbiophysicalohax.com' # 15372 equal to 0 (seed = 0)domain = seedfor i in range(1000): print(domain) domain = next_domain(domain)
zfrpestnessbiophysicalohax.comhdquestnessbiophysicalohax.comumcuestnessbiophysicalohax.comhrbyestnessbiophysicalohax.comysrtestnessbiophysicalohax.comkgteestnessbiophysicalohax.comhfsnestnessbiophysicalohax.comnjxfestnessbiophysicalohax.comlpagestnessbiophysicalohax.comkacuestnessbiophysicalohax.com

DGA的优点

1、使用DGA的僵尸网络有较为健壮的寻址方式,可对抗DNS域名黑名单拦截、态势感知系统以及特征码检测系统。

2、DGA是一种理想的备用信道,可作为back up手段恢复僵尸网络控制。

DGA的缺点

1、需要遍历DGA列表,寻址效率低。

2、大量NX Domain流量导致通信易被检测发现。

3、如果DGA数量过多,出于时间和金钱成本开销,攻击者难以全部注册,安全人员可以抢注并通过sink hole手段劫持僵尸网络

利用一些在线网站或者程序做为C2 Server或者中转C2 Server真实IP

比如, gmail,github,twitter,telegram等等

用Gmail 做C2 Serverhttps://github.com/maldevel/gdog
用Github 做C2 Serverhttps://github.com/maldevel/canisrufus
用telegram 做C2 Serverhttps://github.com/blazeinfosec/bt2

主要有两种玩法:

1, 直接做C2 Server

比如, getlook23使用GitHub Issues作为C2

C2的一些隐藏策略与防丢失

解析出来就是

1. whoami2. "rnUser accounts for \\JOHN-PCrnrn-------------------------------------------------------------------------------rnAdministrator            Guest                    John                     rnThe command completed successfully.rnrn----John"3.  "rnUser accounts for \\BEA-CHI-T-7PR01rnrn-------------------------------------------------------------------------------rn5upervisor               Administrator            Guest                    rnJohn Doe                 rnThe command completed successfully.rnrn----John Doe"4.  "john-pc\administratorrn----Administrator"5.  "warzone1\workerrn----worker"6.  "win7pro-maltest\bufrn----BUF"7.  "anna-pc\annarn----anna"8.  "johnson-pc\johnsonrn----Johnson"9.  "klone-pc\adminrn----admin"10. "john-pc\johnrn----John"11. "admin-win7adminrn----Admin"12. "admin-win7adminrn----Admin"13. "admin-win7adminrn----Admin"14. "warzone1workerrn----worker"15. "warzone1workerrn----worker"16. "warzone1workerrn----worker"17. "od-sploitodrn----od"18. "bea-chi-t-7pr01john doern----John Doe"

2, 把C2 Server IP 或者Dns域名藏起来(比如,藏到repo里面),解析到真正的C2的地址。

C2的一些隐藏策略与防丢失

C2的一些隐藏策略与防丢失

注意:上文中提到的内容只是用作技术讨论,请勿用于非法用途!

C2的一些隐藏策略与防丢失

精彩推荐





C2的一些隐藏策略与防丢失
C2的一些隐藏策略与防丢失C2的一些隐藏策略与防丢失

C2的一些隐藏策略与防丢失C2的一些隐藏策略与防丢失

C2的一些隐藏策略与防丢失

C2的一些隐藏策略与防丢失

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: