Table of Contents
Giới thiệu
Các nhà phân tích mối đe dọa đang điều tra cơ sở hạ tầng độc hại có khả năng
gặp phải "thư mục mở" trong quá trình điều tra của họ. Các thư mục này,
thường được gọi là "opendirs", là các máy chủ có thể truy cập công khai, nơi
các tác nhân đe dọa lưu trữ các tệp độc hại liên quan đến hoạt động của
chúng.
Thư mục mở là một khái niệm đơn giản mà nhiều người sẽ quen thuộc. Mặc dù
vậy, có rất ít tài liệu công khai về việc khám phá ra chúng và cách xác định
và theo dõi cơ sở hạ tầng thư mục mở mới.
Blog này sẽ trình bày những kiến thức cơ bản về thư mục mở, cách bạn có
thể khám phá chúng trong quá trình tìm kiếm và cách tiếp tục tìm hiểu về cơ
sở hạ tầng thư mục mở.
Thư mục mở là gì?
Thư mục mở đơn giản là máy chủ nơi thư mục được để “mở” và có thể truy cập
công khai bằng cách duyệt đến IP hoặc tên miền của trang web.
Theo quan điểm của tác nhân đe dọa, thư mục này cho phép các tệp độc hại dễ
dàng truy cập và phân phối khi và nơi cần thiết. Đây thường là các tệp giai
đoạn thứ hai của phần mềm độc hại hoặc công cụ được sử dụng trong các hoạt
động thực hành.
Cũng có những trường hợp sử dụng hợp pháp, khi một dịch vụ hợp pháp cần tạo
một tệp công khai và dễ truy cập, nhưng hôm nay, chúng ta sẽ tập trung vào
các trường hợp sử dụng có mục đích xấu và cách phân biệt chúng với các ví dụ
thực tế.
Dưới đây (được chia sẻ bởi RussianPanda9XX trên X/Twitter) là một ví dụ độc
hại trong đó một thư mục mở đang lưu trữ các tệp độc hại. Ví dụ này hiển thị
một thư mục mở dựa trên Apache khi xem trực tiếp trong trình duyệt.
Một ví dụ khác là thư mục mở được ValleyRat sử dụng và được Zscaler báo cáo.
Thư mục mở đang sử dụng phần mềm HFS (Máy chủ tệp HTTP).
Giao diện khác nhau giữa các phần mềm, nhưng chức năng vẫn như nhau. Đây là
một ví dụ khác về sự khác biệt nhỏ giữa Apache và Python. Những khác biệt
này được đề cập chi tiết hơn trong Báo cáo “ Dorking The Internet ” của
Censys.
Vậy làm thế nào bạn có thể tìm được một thư mục mở?
Có thể khám phá các thư mục mở trong phiên bản cộng đồng của Censys bằng
cách tìm kiếm nhãn open-dir.
Censys tự động quét internet để tìm các thư mục mở và áp dụng nhãn
open-dir, bất kể phần mềm nào được sử dụng. Điều này có nghĩa là Apache,
Python, HFS và các phần mềm khác đều sẽ được bao gồm và không cần phải tìm
kiếm riêng lẻ.
Nhãn này sẽ bao gồm tất cả các thư mục mở, bao gồm cả kết quả độc hại và
hợp pháp. Chỉ riêng nhãn có thể trả về hàng trăm nghìn kết quả.
Chúng ta thấy điều này bên dưới khi tìm kiếm label:open-dir, kết quả trả
về là 450.153 thư mục đang mở hiện tại.
Như đã hiển thị, tìm kiếm labels:open-dir sẽ trả về tất cả kết quả bất kể
chúng là độc hại hay hợp pháp.
Phần còn lại của blog này sẽ trình bày cách kết hợp truy vấn này với các
tham số bổ sung để chỉ xác định các kết quả độc hại.
Phần 1: Tên tệp tĩnh để săn tìm thư mục mở
Phương pháp đơn giản nhất để xác định thư mục độc hại là sử dụng tên tệp
từ các sự cố trước đó.
Hãy xem xét 81.71.147[.]158, được chia sẻ bởi @morimolymoly2 trên
Twitter/X. IP này chứa một thư mục mở với số lượng lớn các tệp đáng ngờ.
Nếu chúng ta tìm kiếm IP trên Censys, chúng ta sẽ đến được trang máy chủ
nơi có thông tin sau trên cổng 80.
Thư mục mở trên 81.71.147[.]158 chứa nhiều tệp đủ duy nhất để được sử dụng
làm điểm trục. Là các giá trị đủ duy nhất để được sử dụng trong truy vấn.
Có hai mô hình chính nổi bật.
- A.dll, a.exe, a.hta, a.jpg – Các tệp đáng ngờ có tên tệp ngắn và chỉ có một ký tự.
- Yaml-payload.jar – Tệp đáng ngờ có chứa “payload” trong tên tệp. Có khả năng liên quan đến khai thác Java Deserialization .
Chúng ta có thể kết hợp các tên tệp này với labels:open-dir để xác
định các tệp lưu trữ cơ sở hạ tầng thư mục mở có cùng tên.
Xoay vòng trên Tên tệp tĩnh
Tên tệp như a.exe có thể được kết hợp với tham số labels:open-dir để xác
định các thư mục mở lưu trữ các tệp có cùng tên (mặc dù không nhất thiết
phải có cùng nội dung tệp).
Censys lưu trữ nội dung thư mục mở trong
trường services.http.response.body , vì vậy đây là nơi chúng ta có thể đặt
tên tệp kết hợp với labels:open-dir
Do đó, chúng ta có thể tìm kiếm các thư mục mở chứa a.exe bằng cách tìm
kiếm labels:open-dir và services.http.response.body:a.exe . Tìm kiếm đơn
giản này trả về 9 máy chủ tương tự.
Như được hiển thị ở trên, kết quả tìm kiếm cho thấy 9 thư mục mở chứa file
.exe .
Kết quả đầu tiên từ tìm kiếm là 159.223.130[.]216 . Duyệt đến trang máy
chủ liên quan sẽ hiển thị một thư mục mở lưu trữ a.exe, cũng như các tệp
khác có lược đồ đặt tên ký tự đơn tương tự. Ngoài a.exe , chúng ta hiện có
b.exe , c.exe và curl.exe .
Curl là một công cụ “hợp pháp” được sử dụng để tải xuống các tệp, do đó
curl.exe không có khả năng là phần mềm độc hại, mà thay vào đó là một công
cụ hỗ trợ được sử dụng để “install” curl trong các hoạt động mà công cụ
curl không có mặt.
Để xác nhận bản chất của các tệp này, chúng ta có thể tải xuống (sử dụng
hộp cát hoặc máy phân tích riêng) bằng cách duyệt trực tiếp đến trang web
và sau đó thực hiện phân tích thủ công hoặc gửi chúng đến hộp cát. Điều
này không phải lúc nào cũng được khuyến nghị vì lý do bảo mật hoạt động,
nhưng đây là chủ đề để thảo luận khác.
Trong trường hợp cơ sở hạ tầng không nhạy cảm, các tệp có thể được quét
bằng cách nhập URL trực tiếp vào VirusTotal . Trong trường hợp này, chúng
ta có thể nhập <IP>/b.exe và thấy rằng nó có 34 lần phát hiện và
chứa một Cấy ghép Sliver C2.
Lưu ý rằng loại quét này thường sẽ cảnh báo cho tác nhân rằng máy chủ của
họ đang bị điều tra. Bạn nên cân nhắc điều này khi điều tra cơ sở hạ tầng.
Tệp b.exe có 34 lần phát hiện, nhưng thư mục mở lưu trữ tệp này có
0.
Điều này có nghĩa là chúng tôi có thể đã tìm thấy một số cơ sở hạ tầng
“mới”, chỉ sử dụng một tên tệp đơn giản để phân tích.
Chúng ta có thể tiếp tục điều tra kết quả tìm kiếm để tìm thêm nhiều
trường hợp của a.exe.
Một kết quả khác từ tìm kiếm trước đó của chúng tôi là 121.43.135[.]166,
chứa tệp a.exe và nhiều tệp đáng ngờ khác.
Có thể thấy cùng kiểu đặt tên tệp trên các máy chủ khác được trả về bởi
tìm kiếm, tất cả đều chứa a.exe kết hợp với các tệp đáng ngờ khác.
Xoay quanh tên tệp khai thác
IP ban đầu chứa một tệp đáng ngờ khác có tên là yaml-payload.jar. Tìm kiếm
tệp này trên Google cho thấy nó liên quan đến khai thác Yaml
Deserialization.
Lặp lại quy trình từ trước, chúng ta có thể xác định các máy chủ tương tự
bằng cách tìm kiếm labels:open-dir và
services.http.response.body:”yaml-payload.jar ”
Search đơn giản sẽ trả về 8 thư mục mở lưu trữ các tệp có cùng tên.
Một trong các kết quả chứa yaml-payload.jar và tham chiếu đến
artifact_x86.exe , đây là tên tệp phổ biến cho Cobalt Strike.
Điều này có nghĩa là sự thay đổi đơn giản của chúng ta trên
yaml-payload.jar có thể dẫn đến việc máy chủ của một tác nhân tận dụng
Cobalt Strike.
Tên artifact_x86.exe đủ duy nhất để được sử dụng làm điểm xoay khác. Nhà
phân tích có thể thực hiện xoay bổ sung trên tên artifact_x86.exe .
Việc này đơn giản như lặp lại các tìm kiếm trước đó với tên tệp khác nhau
trong trường services.http.response.body .
Tóm tắt – Tên tệp tĩnh để săn tìm thư mục mở
Tên tệp tĩnh đóng vai trò là phương tiện đơn giản và hiệu quả cao để phát
hiện các thư mục mở độc hại mới.
Bằng cách sử dụng báo cáo công khai (Mạng xã hội, Intel Repos, Sự cố nội
bộ), bạn có thể dễ dàng xác định tên tệp đơn giản có thể dẫn đến cơ sở hạ
tầng mới.
Để thực hiện tất cả những điều này, chỉ cần tìm kiếm labels:open-dir rồi
thêm tên tệp đáng ngờ của bạn vào trường services.http.response.body.
Mục 2: Hệ thống tự động và nhà cung cấp dịch vụ lưu trữ
Việc tìm kiếm thư mục mở có thể được hỗ trợ rất nhiều bằng cách kết hợp
các nhà cung cấp dịch vụ lưu trữ với nhãn:truy vấn open-dir .
Điều này có thể đặc biệt hiệu quả khi một diễn viên sử dụng nhà cung cấp
dịch vụ lưu trữ độc đáo hoặc không phổ biến.
Hãy xem xét IP 77.105.160.30 (ban đầu được chia sẻ bởi @karol_paciorek ).
Máy chủ này có thư mục mở và được lưu trữ trên EVILEMPIRE với Số hệ thống
tự động là 216309.
Vì đây là nhà cung cấp không phổ biến nên chúng ta có thể khám phá thêm
nhiều thư mục mở bằng cách kết hợp số ASN liên quan với labels:open-dir.
Việc sử dụng EVILEMPIRE khá độc đáo khi chỉ có 8 thư mục mở được lưu trữ ở
đó.
Một trong những kết quả đó là 77.105.132[.]27, phù hợp với tiêu chí tìm
kiếm của chúng tôi và đã được đánh dấu là C2 đã biết.
Khi duyệt đến trang lưu trữ và xem nội dung thư mục, có vẻ như nó đang lưu
trữ cả phần mềm độc hại Vidar và Lumma.
Tóm tắt – Hệ thống tự động và nhà cung cấp dịch vụ lưu trữ
Kết hợp tìm kiếm thư mục mở với các nhà cung cấp dịch vụ lưu trữ khác
thường có thể nhanh chóng mang lại kết quả mới.
Phương pháp này hiệu quả nhất khi nhà cung cấp không phổ biến hoặc nổi
tiếng vì lưu trữ các tác nhân độc hại. Vì vậy, hãy cẩn thận khi áp dụng kỹ
thuật này cho một nhà cung cấp lớn như Amazon hoặc CloudFlare. Các nhà
cung cấp lớn như thế này có thể liên kết với hàng chục nghìn kết quả, có
thể khó phân tích và cực kỳ dễ xảy ra kết quả dương tính giả nếu không có
bộ lọc bổ sung.
Hãy xem xét rằng CloudFlare đã được liên kết với 38.614 thư mục mở chỉ
tính riêng trong năm 2023. Trong khi Amazon được liên kết với 21.805 thư
mục mở. Nhiều số liệu thống kê hơn được đề cập chi tiết trong “ Dorking The Internet ”.
Phần 3: Mẫu tên tệp và biểu thức chính quy
Trong phần đầu tiên, chúng tôi đã sử dụng tên tệp tĩnh để xoay sang các
thư mục mở bổ sung. Tuy nhiên, có một cách tốt hơn nhiều để thực hiện việc
này bằng cách thêm biểu thức chính quy.
Hãy xem xét tìm kiếm “files named a.exe ” so với tìm kiếm “ANY single character .exe”. Tùy chọn thứ hai mang tính chung chung hơn (theo nghĩa
tốt) và cho phép tìm kiếm hiệu quả hơn.
Chúng ta có thể tóm tắt tên tệp a.exe bằng cách sử dụng biểu thức chính
quy để thay vào đó tìm kiếm bất kỳ tệp thực thi một ký tự nào. Để tìm kiếm
hiệu quả hơn, chúng ta thậm chí có thể mở rộng điều này thành bất kỳ tên
tệp một ký tự nào có phần mở rộng exe, hta hoặc rtf .
Hãy xem xét các tên tệp sau đây từ một trong những tìm kiếm trước đây của
chúng tôi.
Thư mục mở chứa 9 tệp chỉ có một ký tự trước phần mở rộng ( a.dll , 1.rtf
, a.hta , v.v.).
Thay vì tìm kiếm từng tên riêng lẻ, chúng ta hãy tạo một biểu thức chính
quy để tìm kiếm tên tệp một ký tự có phần mở rộng là exe , rtf hoặc hta .
Chúng ta có thể tạo một nguyên mẫu đơn giản bằng CyberChef, sau đó thêm nó
vào trường services.http.response.body.
Lưu ý rằng bây giờ chúng ta cần sử dụng nội dung HTML thô chứ không phải kết
xuất HTML từ các ảnh chụp màn hình trước đó, vì vậy chúng ta sẽ thêm . *\"
vào cả hai bên biểu thức chính quy của mình. Điều này giải thích cho cú pháp
HTML (hiển thị bên dưới) và chỉ định rằng chúng ta chỉ muốn các tệp có tên
là a.exe, không phải các tệp có chứa a.exe.
Bên dưới chúng ta có thể thấy dấu ngoặc kép “trước và sau tên tệp”, chúng ta
cần lưu ý đến điều này trong biểu thức chính quy của mình.
labels:open-dir và dịch vụ.http.response.body:/.*\”\w\.(exe|hta|rtf)\”.*/
Đối với những ai không quen với biểu thức chính quy, đây là hình ảnh trực
quan được cung cấp bởi regexper.com
Một kết quả tìm kiếm khác là 1.92.96[.]35 , trong đó biểu thức chính quy của
chúng tôi khớp với tên tệp một ký tự như f.exe, m.exe, m.hta, p.hta.
Ngoài các tên trùng khớp, hiện chúng ta có một thư mục mở tham chiếu đến
cs4.9 , có khả năng là tham chiếu đến Cobalt Strike Phiên bản 4.9. Chuỗi
cs4.9 sẽ rất tuyệt vời để sử dụng cho các điểm xoay bổ sung.
Một kết quả tìm kiếm khác là 38.206.173[.]58 , có vẻ như đang lưu trữ phần
mềm tống tiền do có unlocker.exe và READ_TO_DECRYPT.html.
Có rất nhiều cơ hội ở đây để các tập tin có thể được sử dụng để chuyển sang
các máy chủ bổ sung.
Tóm tắt – Mẫu tên tệp và biểu thức chính quy
Các mẫu tên tệp dưới dạng biểu thức chính quy có thể hiệu quả hơn nhiều so
với tìm kiếm tên tĩnh. Nếu bạn thấy nhiều tên tệp có giá trị khác nhau nhưng
"tương tự", hãy thử sử dụng biểu thức chính quy để nhóm chúng lại với nhau.
Các truy vấn nâng cao sử dụng biểu thức chính quy thường sẽ dẫn đến các máy
chủ độc hại bổ sung.
Phần 4: Kết hợp phần mở rộng tệp
Phần mở rộng tệp có thể là một cách đơn giản và hiệu quả khác để xác định
các thư mục mở đáng ngờ.
Ví dụ, sự kết hợp của tệp .exe và .hta trong cùng một thư mục mở là rất hiếm
và không có khả năng xảy ra trong một thư mục hợp lệ. Vì vậy, chúng ta có
thể sử dụng ý tưởng này để xác định máy chủ độc hại. Khái niệm tương tự có
thể được áp dụng cho tệp .hta và .ps1 chia sẻ cùng một thư mục.
Hãy xem xét một trong những kết quả trước đây của chúng tôi, trong đó có sự
kết hợp của .hta, .png, .exe, .msi và .txt . Chúng ta có thể sử dụng sự kết
hợp này (hoặc một tập hợp con) để xác định cơ sở hạ tầng bổ sung.
Chúng ta có thể xây dựng truy vấn tìm kiếm tất cả các thư mục mở có chứa cả
phần mở rộng .hta và .exe.
labels:open-dir and same_service(services.http.response.body:*.hta* và
services.http.response.body:*.exe*) and not services.http.response.body:*htaccess*
Một vài ghi chú nhanh về truy vấn đó:
- Same_service – Điều này cho biết tìm kiếm chỉ bao gồm các kết quả mà các tệp được quan sát trên cùng một cổng. Chúng tôi không muốn một máy chủ có .hta trên cổng 443 và .exe riêng biệt trên cổng 80.
- Không phải .htaccess – Đây là tệp hợp lệ khớp với tìm kiếm đại diện của chúng tôi đối với .hta , chúng tôi muốn loại trừ tệp này khỏi kết quả mà không cần dùng đến biểu thức chính quy.
Chạy truy vấn đó sẽ trả về 9 kết quả, một trong số đó là thư mục mở trên
20.163.176[.]155.
Thư mục này khớp với tìm kiếm của chúng tôi về cả tệp .hta và .exe trên cùng
một dịch vụ.
Thư mục mở này trên 20.163.176[.]155 chứa nhiều tệp "cập nhật" được
VirusTotal đánh dấu là trình tải xuống. Vì vậy, chúng tôi đã gặp phải một
máy chủ khác chứa các tệp độc hại.
Thư mục mở cũng chứa một mẫu mới của các tệp ps1 và exe , do đó chúng ta có
thể điều chỉnh truy vấn để tìm kiếm tệp này và xác định thêm các kết quả
đáng ngờ.
Truy vấn này sẽ tìm kiếm các thư mục mở chứa cả tập lệnh PowerShell và tệp
thực thi.
labels:open-dir and same_service(services.http.response.body:*.ps1* and services.http.response.body:*.exe*)
Tìm kiếm trả về 84 kết quả cho các thư mục mở chứa tập lệnh và tệp thực thi
PowerShell.
Một trong những kết quả này là 96.255.173[.]42, chứa cả .exe và ps1, cũng
như một bộ sưu tập các tệp đáng ngờ khác có thể liên quan đến PowerSploit
Toolkit.
Phần thưởng Pivot trên các mẫu tên tệp
Thư mục được hiển thị trước đó chứa nhiều tệp có tên tệp là “power”, theo
sau là phần mở rộng ps1 hoặc py.
Bằng cách sử dụng biểu thức chính quy, chúng ta có thể biến điều này thành
truy vấn chung cho bất kỳ thư mục mở nào chứa .py hoặc ps1 và tên tệp bắt
đầu bằng power .
Đầu tiên chúng ta có thể tạo nguyên mẫu biểu thức chính quy bằng CyberChef.
Biểu thức chính quy hoạt động, chúng ta có thể tìm kiếm các tệp .ps1 hoặc
.py có tên tệp chứa power.
Tìm kiếm trả về 7 kết quả, một trong số đó là 95.111.214[.]111.
Chúng ta có thể thấy rằng thư mục này chứa nhiều tệp liên quan đến bộ công
cụ Powershell tấn công hơn.
Một kết quả khác là 116.114.20[.]180, chứa powercat.ps1 cùng với nhiều tên
tệp đáng ngờ khác.
Tệp Powercat có thể là tham chiếu đến việc triển khai Netcat của Powershell.
Tóm tắt: Kết hợp các phần mở rộng tập tin
Phần mở rộng tệp có thể hữu ích và đơn giản như tên tệp khi tìm kiếm các thư
mục mở.
Nếu một cuộc điều tra cho thấy một thư mục mở với sự kết hợp bất thường của
các loại tệp, hãy thử sử dụng điều đó trong truy vấn của bạn. Bạn sẽ ngạc
nhiên về mức độ đơn giản của điều này, nhưng nó có thể dẫn đến kết quả độc
hại mới thường xuyên như thế nào.
Phần kết luận
Chúng tôi đã trình bày 4 kỹ thuật hữu ích để xác định và săn lùng các thư
mục mở độc hại. Các kỹ thuật này cực kỳ hiệu quả để tìm và săn lùng cơ sở hạ
tầng thư mục mở được các tác nhân đe dọa sử dụng.
Mặc dù đây không phải là danh sách đầy đủ, nhưng những kỹ thuật này, cả
riêng lẻ lẫn kết hợp, đều là những phương pháp tuyệt vời cần có trong bộ
công cụ điều tra của bạn.
Ngoại trừ biểu thức chính quy, tất cả các kỹ thuật này đều có thể dùng thử
trong phiên bản Community edition của Censys.
Và đối với những người yêu thích số liệu thống kê và tìm hiểu sâu, hãy xem
báo cáo Dorking The Internet của Censys. Báo cáo khổng lồ dài 31 trang này
sẽ xem xét tất cả các chi tiết nhỏ nhặt về việc lộ danh mục mở, bao gồm cả
cách thức và địa điểm chúng được tìm thấy trong cả các tình huống độc hại và
hợp pháp.
Các truy vấn liên quan đến tiền thưởng
Dành cho người dùng cộng đồng
Bất kỳ thư mục mở nào (Link)
labels:open-dir
Mở các thư mục chứa các tập tin .exe (Link)
labels:open-dir và dịch vụ.http.response.body:a.exe
Mở các thư mục chứa “Payload.exe”
labels:open-dir và dịch vụ.http.response.body:payload.exe
Mở thư mục tham chiếu CS4.9 (Link)
labels:open-dir và dịch vụ.http.response.body:cs4.9
Đối với người dùng có quyền truy cập biểu thức chính quy
Mở các thư mục chứa các tệp “Power” có phần mở rộng ps1 hoặc py
labels:open-dir and services.http.response.body:/.*power[az]+\.(ps1|py).*/
labels:open-dir and services.http.response.body:/.*\W\w\.(hta|rtf|ps1)\W.*/
Mở các thư mục tham chiếu đến bất kỳ phiên bản nào của Cobalt Strike theo
định dạng csX.X (Link)
labels:open-dir and services.http.response.body:/.*\W(cs|cobalt)[34]\.\d(\.exe)?.*/
labels:open-dir and services.http.response.body:/.*\”[0-9]{1,5}\.png\W.*/
Nguồn: censys.com