Amazon GuardDuty 的新增功能 – Amazon EBS 卷的惡意軟體檢測

亞馬遜雲開發者發表於2023-03-17

藉助 Amazon GuardDuty,您可以監控自己的 AWS 賬戶和工作負載以檢測惡意活動。我們於近日在 GuardDuty 中增加了檢測惡意軟體的功能。惡意軟體用於危害工作負載、重新調整資源用途或未經授權訪問資料。啟用 GuardDuty 惡意軟體保護之後,當 GuardDuty 檢測到您在 EC2 上執行的 EC2 例項或容器工作負載之一正在執行可疑操作時,就會啟動惡意軟體掃描。例如,當 EC2 例項與已知惡意的命令和控制伺服器進行通訊時,或者正在對其他 EC2 例項執行拒絕服務 (DoS) 或蠻力破解攻擊時,就會觸發惡意軟體掃描。

亞馬遜雲科技開發者社群為開發者們提供全球的開發技術資源。這裡有技術文件、開發案例、技術專欄、培訓影片、活動與競賽等。幫助中國開發者對接世界最前沿技術,觀點,和專案,並將中國優秀開發者或技術推薦給全球雲社群。如果你還沒有關注/收藏,看到這裡請一定不要匆匆劃過,點這裡讓它成為你的技術寶庫!

GuardDuty 支援許多檔案系統型別,該工具會掃描已知用於傳播或包含惡意軟體的檔案格式,包括 Windows 和 Linux 可執行檔案、PDF 檔案、存檔、二進位制檔案、指令碼、安裝程式、電子郵件資料庫和普通電子郵件。

識別出潛在的惡意軟體後,將生成可操作的安全調查結果,其中包含威脅和檔名、檔案路徑、EC2 例項 ID、資源標籤以及(如果是容器)容器 ID 和使用的容器映像等資訊。GuardDuty 支援在 EC2 上執行的容器工作負載,包括客戶管理的 Kubernetes 叢集或個別 Docker 容器。如果容器由 Amazon Elastic Kubernetes Service (EKS) or Amazon Elastic Container Service (Amazon ECS) 管理,則調查結果還包括叢集名稱和任務pod ID,因此應用程式安全團隊可以快速找到受影響的容器資源。

與所有其他 GuardDuty 調查結果一樣,惡意軟體檢測將傳送到 GuardDuty 控制檯,透過 Amazon EventBridge 推送,路由到 AWS Security Hub,然後在 Amazon Detective 中提供以開展事件調查。

++GuardDuty 惡意軟體保護的工作原理++

啟用惡意軟體保護後,您將設定一個 Amazon Identity and Access Management (IAM) 服務相關角色,該角色授予 GuardDuty 執行惡意軟體掃描的許可權。對 EC2 例項啟動惡意軟體掃描時,GuardDuty 惡意軟體保護使用這些許可權拍攝小於 1 TB 的附加 Amazon Elastic Block Store (EBS) 卷快照,然後在同一 Amazon 區域內的 Amazon 服務賬戶中恢復 EBS 卷,以對它們進行惡意軟體掃描。您可以使用標記,從這些許可權和掃描中包括或排除 EC2 例項。這樣,您無需部署安全軟體或代理來監控惡意軟體,掃描卷的操作也不會影響正在執行的工作負載。掃描完成後,將刪除服務賬戶中的 EBS 卷和您賬戶中的快照。或者,您可以在檢測到惡意軟體時保留快照。

服務相關角色授予 GuardDuty 訪問用於加密 EBS 卷的 Amazon Key Management Service (Amazon KMS) 金鑰的許可權。如果對附加到可能遭到入侵的 EC2 例項的 EBS 卷使用客戶託管式金鑰進行加密,則 GuardDuty 惡意軟體保護也會使用相同的金鑰來加密副本 EBS 卷。如果這些卷未加密,GuardDuty 將使用自己的金鑰來加密副本 EBS 卷並確保隱私。不支援使用 EBS 託管式金鑰加密的卷。

雲中的安全是您與 Amazon 共同承擔的責任。作為防護機制,GuardDuty 惡意軟體保護使用的服務相關角色如果具有 GuardDutyExcluded 標籤,則無法對您的資源(例如 EBS 快照和卷、EC2 例項和 KMS 金鑰)執行任何操作。在將 GuardDutyExcluded設定為 true 的情況下標記快照後,GuardDuty 服務將無法訪問這些快照。GuardDutyExclud 標籤將取代任何包含標記。許可權還會限制 GuardDuty 修改快照的方式,以便在與 GuardDuty 服務賬戶共享時無法將其公開。

由 GuardDuty 建立的 EBS 卷始終是加密的。GuardDuty 只能在具有 GuardDuty 掃描 ID 標籤的 EBS 快照上使用 KMS 金鑰。在獲得 EC2 檢測結果後建立快照時,GuardDuty 會新增掃描 ID 標籤。無法從除 Amazon EBS 服務之外的任何其他上下文呼叫與 GuardDuty 服務賬戶共享的 KMS 金鑰。掃描成功完成後,將撤銷 KMS 金鑰授予並刪除 GuardDuty 服務賬戶中的卷副本,從而確保 GuardDuty 服務在完成掃描操作後無法訪問您的資料。

++為 Amazon 賬戶啟用惡意軟體保護++

如果您尚未使用 GuardDuty,則在為自己的賬戶啟用 GuardDuty 時,預設情況下會啟用惡意軟體保護。我已經在使用 GuardDuty,因此需要從控制檯啟用惡意軟體保護。如果您正在使用 Amazon Organizations,您的代理管理員賬戶可以為現有成員賬戶啟用此功能,並配置是否應自動註冊組織中的新 Amazon 賬戶。

在 GuardDuty 控制檯中,我選擇導航窗格中 Settings(設定)下的 Malware Protection(惡意軟體保護)。在其中,我選擇 Enable(啟用),然後選擇 Enable Malware Protection(啟用惡意軟體保護)。

螢幕截圖在掃描後會自動刪除。在 General settings(常規設定)中,我可以選擇將檢測到惡意軟體的螢幕截圖保留在我的 Amazon 賬戶中,並將其用於進一步分析。

Scan options(掃描選項)中,我可以配置包含標籤的列表,以便只掃描帶有這些標籤的 EC2 例項;或者排除標籤,以便跳過列表中包含標籤的 EC2 例項。

++測試惡意軟體保護 GuardDuty 檢測結果++

為了生成幾個 Amazon GuardDuty 檢測結果,包括新的惡意軟體保護檢測結果,我克隆了 Amazon GuardDuty Tester 儲存庫:

$ git clone https://github.com/awslabs/amazon-guardduty-tester

首先,我使用 guardduty-tester.template 檔案建立一個 Amazon CloudFormation 堆疊。堆疊準備就緒後,我會按照說明將 SSH 客戶端配置為透過堡壘主機登入到測試器例項。然後,我連線到測試器例項:

$ ssh tester

從測試器例項中,我啟動guardduty_tester.sh 指令碼來生成檢測結果:

$ ./guardduty_tester.sh 

*********************************************************************
* Test #1 - Internal port scanning                                    *
* This simulates internal reconaissance by an internal actor or an   *
* external actor after an initial compromise.This is considered a    *
* low priority finding for GuardDuty because its not a clear indicator*
* of malicious intent on its own.                                     *
*********************************************************************


Starting Nmap 6.40 ( http://nmap.org ) at 2022-05-19 09:36 UTC
Nmap scan report for ip-172-16-0-20.us-west-2.compute.internal (172.16.0.20)
Host is up (0.00032s latency).
Not shown: 997 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
80/tcp   closed http
5050/tcp closed mmcc
MAC Address: 06:25:CB:F4:E0:51 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 4.96 seconds

-----------------------------------------------------------------------

*********************************************************************
* Test #2 - SSH Brute Force with Compromised Keys                     *
* This simulates an SSH brute force attack on an SSH port that we    *
* can access from this instance.It uses (phony) compromised keys in  *
* many subsequent attempts to see if one works.This is a common      *
* techique where the bad actors will harvest keys from the web in     *
* places like source code repositories where people accidentally leave*
* keys and credentials (This attempt will not actually succeed in     *
* obtaining access to the target linux instance in this subnet)       *
*********************************************************************

2022-05-19 09:36:29 START
2022-05-19 09:36:29 Crowbar v0.4.3-dev
2022-05-19 09:36:29 Trying 172.16.0.20:22
2022-05-19 09:36:33 STOP
2022-05-19 09:36:33 No results found...
2022-05-19 09:36:33 START
2022-05-19 09:36:33 Crowbar v0.4.3-dev
2022-05-19 09:36:33 Trying 172.16.0.20:22
2022-05-19 09:36:37 STOP
2022-05-19 09:36:37 No results found...
2022-05-19 09:36:37 START
2022-05-19 09:36:37 Crowbar v0.4.3-dev
2022-05-19 09:36:37 Trying 172.16.0.20:22
2022-05-19 09:36:41 STOP
2022-05-19 09:36:41 No results found...
2022-05-19 09:36:41 START
2022-05-19 09:36:41 Crowbar v0.4.3-dev
2022-05-19 09:36:41 Trying 172.16.0.20:22
2022-05-19 09:36:45 STOP
2022-05-19 09:36:45 No results found...
2022-05-19 09:36:45 START
2022-05-19 09:36:45 Crowbar v0.4.3-dev
2022-05-19 09:36:45 Trying 172.16.0.20:22
2022-05-19 09:36:48 STOP
2022-05-19 09:36:48 No results found...
2022-05-19 09:36:49 START
2022-05-19 09:36:49 Crowbar v0.4.3-dev
2022-05-19 09:36:49 Trying 172.16.0.20:22
2022-05-19 09:36:52 STOP
2022-05-19 09:36:52 No results found...
2022-05-19 09:36:52 START
2022-05-19 09:36:52 Crowbar v0.4.3-dev
2022-05-19 09:36:52 Trying 172.16.0.20:22
2022-05-19 09:36:56 STOP
2022-05-19 09:36:56 No results found...
2022-05-19 09:36:56 START
2022-05-19 09:36:56 Crowbar v0.4.3-dev
2022-05-19 09:36:56 Trying 172.16.0.20:22
2022-05-19 09:37:00 STOP
2022-05-19 09:37:00 No results found...
2022-05-19 09:37:00 START
2022-05-19 09:37:00 Crowbar v0.4.3-dev
2022-05-19 09:37:00 Trying 172.16.0.20:22
2022-05-19 09:37:04 STOP
2022-05-19 09:37:04 No results found...
2022-05-19 09:37:04 START
2022-05-19 09:37:04 Crowbar v0.4.3-dev
2022-05-19 09:37:04 Trying 172.16.0.20:22
2022-05-19 09:37:08 STOP
2022-05-19 09:37:08 No results found...
2022-05-19 09:37:08 START
2022-05-19 09:37:08 Crowbar v0.4.3-dev
2022-05-19 09:37:08 Trying 172.16.0.20:22
2022-05-19 09:37:12 STOP
2022-05-19 09:37:12 No results found...
2022-05-19 09:37:12 START
2022-05-19 09:37:12 Crowbar v0.4.3-dev
2022-05-19 09:37:12 Trying 172.16.0.20:22
2022-05-19 09:37:16 STOP
2022-05-19 09:37:16 No results found...
2022-05-19 09:37:16 START
2022-05-19 09:37:16 Crowbar v0.4.3-dev
2022-05-19 09:37:16 Trying 172.16.0.20:22
2022-05-19 09:37:20 STOP
2022-05-19 09:37:20 No results found...
2022-05-19 09:37:20 START
2022-05-19 09:37:20 Crowbar v0.4.3-dev
2022-05-19 09:37:20 Trying 172.16.0.20:22
2022-05-19 09:37:23 STOP
2022-05-19 09:37:23 No results found...
2022-05-19 09:37:23 START
2022-05-19 09:37:23 Crowbar v0.4.3-dev
2022-05-19 09:37:23 Trying 172.16.0.20:22
2022-05-19 09:37:27 STOP
2022-05-19 09:37:27 No results found...
2022-05-19 09:37:27 START
2022-05-19 09:37:27 Crowbar v0.4.3-dev
2022-05-19 09:37:27 Trying 172.16.0.20:22
2022-05-19 09:37:31 STOP
2022-05-19 09:37:31 No results found...
2022-05-19 09:37:31 START
2022-05-19 09:37:31 Crowbar v0.4.3-dev
2022-05-19 09:37:31 Trying 172.16.0.20:22
2022-05-19 09:37:34 STOP
2022-05-19 09:37:34 No results found...
2022-05-19 09:37:35 START
2022-05-19 09:37:35 Crowbar v0.4.3-dev
2022-05-19 09:37:35 Trying 172.16.0.20:22
2022-05-19 09:37:38 STOP
2022-05-19 09:37:38 No results found...
2022-05-19 09:37:38 START
2022-05-19 09:37:38 Crowbar v0.4.3-dev
2022-05-19 09:37:38 Trying 172.16.0.20:22
2022-05-19 09:37:42 STOP
2022-05-19 09:37:42 No results found...
2022-05-19 09:37:42 START
2022-05-19 09:37:42 Crowbar v0.4.3-dev
2022-05-19 09:37:42 Trying 172.16.0.20:22
2022-05-19 09:37:46 STOP
2022-05-19 09:37:46 No results found...

-----------------------------------------------------------------------

*********************************************************************
* Test #3 - RDP Brute Force with Password List                        *
* This simulates an RDP brute force attack on the internal RDP port  *
* of the windows server that we installed in the environment. It uses*
* a list of common passwords that can be found on the web.This test  *
* will trigger a detection, but will fail to get into the target      *
* windows instance.                                                   *
*********************************************************************

Sending 250 password attempts at the windows server...
Hydra v9.4-dev (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-05-19 09:37:46
[WARNING] rdp servers often don't like many connections, use -t 1 or -t 4 to reduce the number of parallel connections and -W 1 or -W 3 to wait between connection to allow the server to recover
[INFO] Reduced number of tasks to 4 (rdp does not like many parallel connections)
[WARNING] the rdp module is experimental.Please test, report - and if possible, fix.
[DATA] max 4 tasks per 1 server, overall 4 tasks, 1792 login tries (l:7/p:256), ~448 tries per task
[DATA] attacking rdp://172.16.0.24:3389/
[STATUS] 1099.00 tries/min, 1099 tries in 00:01h, 693 to do in 00:01h, 4 active
1 of 1 target completed, 0 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2022-05-19 09:39:23

-----------------------------------------------------------------------

*********************************************************************
* Test #4 - CryptoCurrency Mining Activity                            *
* This simulates interaction with a cryptocurrency mining pool which *
* can be an indication of an instance compromise.In this case, we are*
* only interacting with the URL of the pool, but not downloading      *
* any files.This will trigger a threat intel based detection.        *
*********************************************************************

Calling bitcoin wallets to download mining toolkits

-----------------------------------------------------------------------

*********************************************************************
* Test #5 - DNS Exfiltration                                          *
* A common exfiltration technique is to tunnel data out over DNS      *
* to a fake domain. Its an effective technique because most hosts    *
* have outbound DNS ports open. This test wont exfiltrate any data,  *
* but it will generate enough unusual DNS activity to trigger the     *
* detection.                                                          *
*********************************************************************

Calling large numbers of large domains to simulate tunneling via DNS

*********************************************************************
* Test #6 - Fake domain to prove that GuardDuty is working            *
* This is a permanent fake domain that customers can use to prove that*
* GuardDuty is working. Calling this domain will always generate the *
* Backdoor:EC2/C&CActivity.B!DNS finding type                         *
*********************************************************************

Calling a well known fake domain that is used to generate a known finding

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> GuardDutyC2ActivityB.com any
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11495
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;GuardDutyC2ActivityB.com.    IN    ANY

;; ANSWER SECTION:
GuardDutyC2ActivityB.com.6943    IN    SOA    ns1.markmonitor.com. hostmaster.markmonitor.com.2018091906 86400 3600 2592000 172800
GuardDutyC2ActivityB.com.6943    IN    NS    ns3.markmonitor.com.
GuardDutyC2ActivityB.com.6943    IN    NS    ns5.markmonitor.com.
GuardDutyC2ActivityB.com.6943    IN    NS    ns7.markmonitor.com.
GuardDutyC2ActivityB.com.6943    IN    NS    ns2.markmonitor.com.
GuardDutyC2ActivityB.com.6943    IN    NS    ns4.markmonitor.com.
GuardDutyC2ActivityB.com.6943    IN    NS    ns6.markmonitor.com.
GuardDutyC2ActivityB.com.6943    IN    NS    ns1.markmonitor.com.

;; Query time: 27 msec
;; SERVER: 172.16.0.2#53(172.16.0.2)
;; WHEN: Thu May 19 09:39:23 UTC 2022
;; MSG SIZE  rcvd: 238


*****************************************************************************************************
預期的 GuardDuty 檢測結果

測試 1:內部埠掃描
預期的檢測結果:EC2 例項 i-011e73af27562827b 正在對遠端主機執行出站埠掃描。172.16.0.20
檢測結果型別:Recon:EC2/Portscan

測試 2:使用洩露金鑰的 SSH 蠻力攻擊
預期有兩個檢測結果 - 一個用於出站檢測,另一個用於入站檢測
出站:i-011e73af27562827b 正在對 172.16.0.20 進行 SSH 蠻力攻擊
入站:172.16.0.25 正在對 i-0bada13e0aa12d383 進行 SSH 蠻力攻擊
檢測結果型別:UnauthorizedAccess:EC2/SSHBruteForce

測試 3:使用密碼列表的 RDP 蠻力攻擊
預期有兩個檢測結果 - 一個用於出站檢測,另一個用於入站檢測
出站:i-011e73af27562827b 正在對 172.16.0.24 進行 RDP 蠻力攻擊
入站:172.16.0.25 正在對 i-0191573dec3b66924 進行 RDP 蠻力攻擊
檢測結果型別:UnauthorizedAccess:EC2/RDPBruteForce

測試 4:加密貨幣活動
預期的檢測結果:EC2 例項 i-011e73af27562827b 正在查詢與比特幣活動相關的域名
檢測結果型別:CryptoCurrency:EC2/BitcoinTool.B!DNS

測試 5:DNS 滲透
預期的檢測結果:EC2 例項 i-011e73af27562827b 正在嘗試查詢與洩露資料相似的域名
檢測結果型別:Trojan:EC2/DNSDataExfiltration

測試 6:C&C 活動
預期檢測結果:EC2 例項 i-011e73af27562827b 正在查詢與已知命令與控制伺服器關聯的域名。
檢測結果型別:Backdoor:EC2/C&CActivity.B!DNS

幾分鐘後,檢測結果將顯示在 GuardDuty 控制檯中。在頂部,我看到了新的惡意軟體保護功能發現的惡意檔案。其中一個檢測結果與 EC2 例項相關,另一個與 ECS 叢集相關。

首先,我選擇與 EC2 例項相關的檢測結果。在皮膚中,我看到有關例項和惡意檔案的資訊,例如檔名和路徑。在 Malware scan details(惡意軟體掃描詳細資訊)部分中,Trigger finding ID(觸發檢測結果 ID)指向觸發惡意軟體掃描的原始 GuardDuty 檢測結果。就我而言,最初的檢測結果是此 EC2 例項正在對另一個 EC2 例項執行 RDP 蠻力攻擊。

在此處,我選擇 Investigate with Detective(使用 Detective 調查),然後直接從 GuardDuty 控制檯轉到 Detective 控制檯,從中視覺化 EC2 例項、Amazon 賬戶和受檢測結果影響的 IP 地址的 Amazon CloudTrailAmazon Virtual Private Cloud (Amazon VPC) 流資料。使用 Detective,我可以分析、調查和確定 GuardDuty 發現的可疑活動的根本原因。

選擇與 ECS 群集相關的檢測結果時,我將獲得有關受影響資源的更多資訊,例如 ECS 叢集、任務、容器和容器映像的詳細資訊。

使用 GuardDuty 測試器指令碼可以更輕鬆地測試 GuardDuty 與您使用的其他安全框架的整體整合,以便在檢測到真正的威脅時做好準備。

++將 GuardDuty 惡意軟體防護保護與 Amazon Inspector 進行比較++

此時,您可能會問自己 GuardDuty 惡意軟體保護與 Amazon Inspector 有何關係,Amazon Inspector 是一項掃描 AWS 工作負載的軟體漏洞和意外網路暴露的服務。這兩種服務相輔相成,提供不同的保護層:

  • Amazon Inspector 透過識別和修復已知軟體和應用程式漏洞提供主動防護,這些漏洞是攻擊者入侵資源和安裝惡意軟體的入口點。
  • GuardDuty 惡意軟體保護可檢測到活躍執行的工作負載中存在的惡意軟體。此時,系統已經受損,但是 GuardDuty 可以限制感染的時間,並在系統受損導致影響業務的事件之前採取措施。

++可用性和定價++

Amazon GuardDuty 惡意軟體保護現已在所有提供 GuardDuty 的 Amazon 區域推出,不包括 AWS 中國(北京)、Amazon 中國(寧夏)、Amazon GovCloud(美國東部)和 Amazon GovCloud(美國西部)區域。

在釋出時,GuardDuty 惡意軟體保護已與以下合作伙伴產品整合:

使用 GuardDuty,您無需部署安全軟體或代理來監控惡意軟體。您只需為檔案系統中掃描的 GB 量(而不是 EBS 卷的大小)和 EBS 快照儲存在您賬戶中的時間付費。除非您在發現惡意軟體時啟用快照保留功能,否則 GuardDuty 建立的所有 EBS 快照都會在掃描後自動刪除。有關更多資訊,請參閱 GuardDuty 定價EBS 定價。請注意,GuardDuty 僅掃描小於 1 TB 的 EBS 卷。為了幫助您控制成本並避免重複警報,同一卷的掃描頻率不會超過每 24 小時一次。

使用 Amazon GuardDuty 檢測惡意活動並保護您的應用程式免受惡意軟體侵害。
Danilo

文章來源:https://dev.amazoncloud.cn/column/article/6309ce920c9a20404da79152

相關文章