Malware - Chương 03: Honeypots
Chào các bạn, hôm nay chúng ta sẽ tiếp tục tìm hiểu về một công cụ được sử dụng nhiều trong phân tích Malware - đó là Honeypot. Ngoài ra, chúng ta sẽ khám phá phần mềm Honeypot Dionaea được sử dụng rất rộng rãi trên các công ty lớn dùng để phân tích Malware.
Honeypots là các hệ thống được thiết kế để khai thác, mặc dù thông qua các lỗ hổng giả lập, lỗ hổng thực sự hoặc điểm yếu, chẳng hạn như mật khẩu SSH dễ đoán. Bằng cách tạo các hệ thống như vậy, bạn có thể thu hút và ghi nhật ký hoạt động (log activity) từ những kẻ tấn công và sâu mạng (network worms) với mục đích nghiên cứu các kỹ thuật tấn công của các hacker. Honeypots thường được phân loại là tương tác cao (high-interaction) hoặc tương tác thấp (low-interaction):
Mặt khác, Honeynets bao gồm hai hoặc nhiều honeypots trên mạng. Thông thường, honeynet được sử dụng để theo dõi một mạng lưới lớn hơn và đa dạng hơn, trong đó một honeypot có thể không đủ. Ví dụ, kẻ tấn công có quyền truy cập vào một honeypot và sau đó cố gắng di chuyển qua mạng sang một máy tính khác. Nếu không có máy tính nào khác trên mạng, kẻ tấn công có thể nhận ra rằng môi trường này không phải là mạng lưới của một công ty và sau đó hắn sẽ biến mất. Mục đích của chương này không phải là để nghiên cứu cách bước đi của kẻ tấn công, vì vậy chúng ta sẽ không thảo luận về honeynets hoặc honeypot tương tác cao. Thay vào đó, chương này tập trung vào các honeypot tương tác thấp với mục đích thu thập các mẫu malware.
Thiết lập một honeypot tương tác thấp như nepenthes, dionaea hoặc mwcollectd là cách tốt nhất để bắt các malware mà các botnets và worms có đóng góp. Bạn có thể sử dụng chúng để phát hiện các lỗ hổng mới đang bị khai thác trong tự nhiên, nghiên cứu xu hướng, thống kê và phát triển quy trình công việc hợp lý hóa quy trình lấy, quét và báo cáo về malware mới. Hình dưới đây cho thấy một sơ đồ về cơ sở hạ tầng honeypot cấp cao mà bạn có thể xây dựng với các mục trong chương này.
Nepenthes là một trong những honeypot tương tác thấp được biết đến nhiều nhất và được triển khai rộng rãi trên Internet. Markus Kötter và Paul Bächer lần đầu tiên phát triển nó vào năm 2005. Nepenthes bao gồm một số module để mô phỏng các lỗ hổng của Microsoft có thể bị khai thác từ xa bởi các hệ thống quét Internet. Hiện tại trang chủ của Nepenthes đã không còn tồn tại nên mình sẽ giới thiệu cho các bạn một phần mềm khác - đó là Dionaea
Dionaea (phiên bản kế thừa của Nepenthes) là một phần mềm honeypot chuyên capture các loại malware và được phát triển dưới dạng The Honeynet Project trong chương trình Google Summer of Code (GSoC) vào năm 2009. Mục tiêu của phần mềm Dionaea là bẫy các lỗ hổng khai thác malware và được phơi bày bởi các dịch vụ được cung cấp qua mạng để có được một bản sao của malware đó.
Dionaea có kiến trúc modular, sử dụng Python làm ngôn ngữ lập trình để mô phỏng các giao thức. Vượt trội hơn nhiều so với người tiền nhiệm của nó (Nepenthes), nó có thể phát hiện các đoạn shellcode bằng LibEmu (Libemu là một thư viện có thể được sử dụng để mô phỏng kiến trúc x86 và phát hiện các đoạn shellcode) và hỗ trợ IPv6 và TLS.
Dionaea sử LibEmu để nhận dạng và đánh giá các payloads được gửi bởi các kẻ tấn công để mà lấy được bản copy của malware.
LibEmu được sử dụng để nhận dạng và nếu thực sự cần thiết thì nó sẽ thực các shellcode. Shellcode sẽ được nhận dạng thông qua việc thực thi trên LibEmu VM và thu được các lệnh gọi API và các đối số. Với cách này hầu hết sẽ định hình được hết các shellcodes, nhưng đối với các shellcodes nhiều giai đoạn (multi-stage) thì không. Hơn nữa, để thu được các lệnh gọi API và các đối số, chúng ta cần cho phép các shellcodes thực hiện hành động (ví dụ: tạo kết nối mạng).
Khi chúng ta thu thập được các mẫu payloads và nhận dạng (profile) của chúng, chúng ta sẽ bắt đầu tìm cách để có được bản copy của malware. Theo như dưới đây là các kỹ thuật thường thấy của các kẻ tấn công hay dùng và cách mà Dionaea chặn chúng:
Các bạn có thể đọc trên trang chủ theo liên kết này: https://dionaea.readthedocs.io/en/latest/installation.html hoặc làm theo hướng dẫn của mình dưới đây. Các bạn nhớ lưu ý là Dionaea chỉ có thể cài đặt trên hệ điều hành Linux nên các bạn chịu khó cài giả lập trên VMware nhé.
Sau khi tất cả các gói build dependencies đã được cài đặt thành công, bạn hãy tải về dionaea theo như các câu lệnh dưới đây (lưu ý: nếu bạn nào chưa cài đặt git thì các bạn nên cài đặt theo câu lệnh sau):
Sau đó, bạn có thể tải source code theo liên kết dưới đây và chứa trong thư mục /opt theo các câu lệnh dưới đây:
Sau khi tải xong, bạn hãy tạo một thư mục build và chạy lệnh cmake để thiết lập quy trình build.
Bây giờ bạn có thể chạy lệnh make để build và chạy lệnh make install để cài đặt honeypot.
Honeypot có thể được tìm thấy trong thư mục /opt/dionaea.
Các bạn có thể kiểm tra xem cài đặt có thành công không bằng câu lệnh dưới đây:
Được rồi, bây giờ chúng ta sẽ bắt đầu cấu hình file dionaea.cfg trong Dionaea. File này chỉ định nơi malware/binaries sẽ bị loại bỏ, các interfaces và port đang lắng nghe. Bạn có thể để nó ở chế độ mặc định nhưng nên nhớ rằng file log sẽ rất lớn.
Vì vậy, dionaea có nhiều services khác nhau cho phép chúng ta có thể sử dụng honeypot để thực hiện việc giăng bẫy nhiều phương thức tấn công và bạn sẽ có nhiều mẫu malware hơn. Các tuỳ chỉnh này có thể luôn có sẵn và bạn có thể kích hoạt các dịch vụ này. Bằng cách điều chỉnh trong file yaml, bạn có thể tuỳ chỉnh dịch vụ và cách mà nó xuất hiện đối với hacker/bot. Ví dụ, bạn muốn giăng bẫy lỗ hổng SMB để lấy mẫu malware nổi tiếng WannaCry, bạn sẽ tuỳ chỉnh trên server để cho phép lỗ hổng SMB xảy ra. Chúng ta có thể bật service thông qua câu lệnh dưới đây:
Nếu bạn muốn kích hoạt thiết lập Windows 7 mặc định, chỉ cần bỏ # Win7.
Bước cuối cùng là chúng ta chạy honeypot bằng câu lệnh dưới đây:
Trên đây mình đã giới thiệu về khái niệm Honeypot và hướng dẫn cho các bạn tự thiết lập một honeypot cho riêng hệ điều hành Ubuntu 16.04. Cám ơn các bạn đã xem bài viết.
Giới thiệu
Honeypot là gì?
Honeypots là các hệ thống được thiết kế để khai thác, mặc dù thông qua các lỗ hổng giả lập, lỗ hổng thực sự hoặc điểm yếu, chẳng hạn như mật khẩu SSH dễ đoán. Bằng cách tạo các hệ thống như vậy, bạn có thể thu hút và ghi nhật ký hoạt động (log activity) từ những kẻ tấn công và sâu mạng (network worms) với mục đích nghiên cứu các kỹ thuật tấn công của các hacker. Honeypots thường được phân loại là tương tác cao (high-interaction) hoặc tương tác thấp (low-interaction):
- Tương tác cao: Các hệ thống với một hệ điều hành không giả lập (non-emulated OS) được cài đặt trên chúng có thể được truy cập và khám phá bởi những kẻ tấn công. Các hệ thống này có thể là máy ảo hoặc máy thật mà bạn có thể reset sau khi chúng bị xâm nhập. Chúng thường được sử dụng để hiểu rõ hơn về những kẻ tấn công và bộ công cụ được sử dụng bởi những kẻ tấn công.
- Tương tác thấp: Các hệ thống chỉ mô phỏng các phần của một hệ điều hành, chẳng hạn như một giao thức mạng nhất định. Các hệ thống này được sử dụng thường xuyên nhất để thu thập malware bằng cách bị khai thác bởi các hệ thống bị nhiễm malware khác.
Mặt khác, Honeynets bao gồm hai hoặc nhiều honeypots trên mạng. Thông thường, honeynet được sử dụng để theo dõi một mạng lưới lớn hơn và đa dạng hơn, trong đó một honeypot có thể không đủ. Ví dụ, kẻ tấn công có quyền truy cập vào một honeypot và sau đó cố gắng di chuyển qua mạng sang một máy tính khác. Nếu không có máy tính nào khác trên mạng, kẻ tấn công có thể nhận ra rằng môi trường này không phải là mạng lưới của một công ty và sau đó hắn sẽ biến mất. Mục đích của chương này không phải là để nghiên cứu cách bước đi của kẻ tấn công, vì vậy chúng ta sẽ không thảo luận về honeynets hoặc honeypot tương tác cao. Thay vào đó, chương này tập trung vào các honeypot tương tác thấp với mục đích thu thập các mẫu malware.
Thiết lập một honeypot tương tác thấp như nepenthes, dionaea hoặc mwcollectd là cách tốt nhất để bắt các malware mà các botnets và worms có đóng góp. Bạn có thể sử dụng chúng để phát hiện các lỗ hổng mới đang bị khai thác trong tự nhiên, nghiên cứu xu hướng, thống kê và phát triển quy trình công việc hợp lý hóa quy trình lấy, quét và báo cáo về malware mới. Hình dưới đây cho thấy một sơ đồ về cơ sở hạ tầng honeypot cấp cao mà bạn có thể xây dựng với các mục trong chương này.
Cấu trúc Honeypot |
Nepenthes
Nepenthes là một trong những honeypot tương tác thấp được biết đến nhiều nhất và được triển khai rộng rãi trên Internet. Markus Kötter và Paul Bächer lần đầu tiên phát triển nó vào năm 2005. Nepenthes bao gồm một số module để mô phỏng các lỗ hổng của Microsoft có thể bị khai thác từ xa bởi các hệ thống quét Internet. Hiện tại trang chủ của Nepenthes đã không còn tồn tại nên mình sẽ giới thiệu cho các bạn một phần mềm khác - đó là Dionaea
Dionaea
Dionaea (phiên bản kế thừa của Nepenthes) là một phần mềm honeypot chuyên capture các loại malware và được phát triển dưới dạng The Honeynet Project trong chương trình Google Summer of Code (GSoC) vào năm 2009. Mục tiêu của phần mềm Dionaea là bẫy các lỗ hổng khai thác malware và được phơi bày bởi các dịch vụ được cung cấp qua mạng để có được một bản sao của malware đó.
Dionaea có kiến trúc modular, sử dụng Python làm ngôn ngữ lập trình để mô phỏng các giao thức. Vượt trội hơn nhiều so với người tiền nhiệm của nó (Nepenthes), nó có thể phát hiện các đoạn shellcode bằng LibEmu (Libemu là một thư viện có thể được sử dụng để mô phỏng kiến trúc x86 và phát hiện các đoạn shellcode) và hỗ trợ IPv6 và TLS.
Các giao thức dùng để bẫy Malware
- Server Message Block (SMB): SMB là giao thức chính được cung cấp bởi Dionaea. SMB có một lịch sử lâu dài về các mã lỗi có thể khai thác từ xa và là mục tiêu rất phổ biến đối với worms.
- Hypertext Transfer Protocol (HTTP): Dionaea hỗ trợ HTTP trên port 80 cũng như HTTPS. Chứng chỉ SSL tự đăng ký và được tạo khi khởi động cho HTTPS.
- File Transfer Protocol (FTP): Dionaea cung cấp server FTP cơ bản trên port 21. Nó cho phép tạo các đường dẫn, tải lên và tải xuống các files.
- Trivial File Transfer Protocol (TFTP): Dionaea cung cấp server TFTP trên port 60 và được sử dụng để phục vụ các files.
- Microsoft SQL Server (MSSQL): Dionaea thực hiện giao thức Luồng Dữ Liệu Dạng Bảng (Tabular Data Stream) và được Microsoft SQL Server sử dụng. Nó lắng nghe (listen) giao thức TCP trên port 1433 và cho phép các máy khách (clients) đăng nhập. Ngoài ra, nó còn có thể giải mã (decode) các câu truy vấn (queries) chạy trên cơ sở dữ liệu (database).
- Voice over IP (VoIP): Được phát triển trong chương (GSoC) vào năm 2011 bởi tác giả PhiBo. Giao thức VoIP được sử dụng trong Dionaea như là một giao thức Phiên Lần Đầu (Session Initial Protocol) hoặc viết tắt là SIP. Mô-đun này không thực hiện kết nối tới một nhà đăng ký/máy chủ VoIP ở bên ngoài; nó chỉ đơn giản là chờ các tin nhắn của SIP, log hết các dữ liệu dưới dạng sự cố hoặc kết xuất (dump) các dữ liệu dạng nhị phân và tương tác một cách phù hợp.
LibEmu
Dionaea sử LibEmu để nhận dạng và đánh giá các payloads được gửi bởi các kẻ tấn công để mà lấy được bản copy của malware.
LibEmu được sử dụng để nhận dạng và nếu thực sự cần thiết thì nó sẽ thực các shellcode. Shellcode sẽ được nhận dạng thông qua việc thực thi trên LibEmu VM và thu được các lệnh gọi API và các đối số. Với cách này hầu hết sẽ định hình được hết các shellcodes, nhưng đối với các shellcodes nhiều giai đoạn (multi-stage) thì không. Hơn nữa, để thu được các lệnh gọi API và các đối số, chúng ta cần cho phép các shellcodes thực hiện hành động (ví dụ: tạo kết nối mạng).
Khi chúng ta thu thập được các mẫu payloads và nhận dạng (profile) của chúng, chúng ta sẽ bắt đầu tìm cách để có được bản copy của malware. Theo như dưới đây là các kỹ thuật thường thấy của các kẻ tấn công hay dùng và cách mà Dionaea chặn chúng:
- Shell Binding / Connect Back, Exec: Dionaea yêu cầu các shell giả lập cho các payloads cung cấp một shell cho kẻ tấn công (thường là ràng buộc port hoặc kết nối lại với kẻ tấn công).
- URLDownToFile API: Cũng giống như Shell Binding, nhưng lần này là sử dụng các lệnh gọi URLDownloadToFile API (nôm na là một API chứa liên kết tải file) để lấy lại các files ở giao thức HTTP và thực thi các files đó.
- Multi-Stage Payloads: Chúng ta không bao giờ biết được giai đoạn tiếp theo của payload là gì; do đó LibEmu được sử dụng để thực thi shellcode trong LibEmu VM.
Thực hành
Thiết lập Dionaea Honeypot
Các bạn có thể đọc trên trang chủ theo liên kết này: https://dionaea.readthedocs.io/en/latest/installation.html hoặc làm theo hướng dẫn của mình dưới đây. Các bạn nhớ lưu ý là Dionaea chỉ có thể cài đặt trên hệ điều hành Linux nên các bạn chịu khó cài giả lập trên VMware nhé.
Cài đặt trên Ubuntu 16.04
Các bạn cần cài đặt các gói build dependencies cần thiết trước khi định cấu hình và xây dựng dionaea. (‘ttf-liberation’ required to ‘util/gnuplotsql.py’).sudo apt-get install \ build-essential \ cmake \ check \ cython3 \ libcurl4-openssl-dev \ libemu-dev \ libev-dev \ libglib2.0-dev \ libloudmouth1-dev \ libnetfilter-queue-dev \ libnl-3-dev \ libpcap-dev \ libssl-dev \ libtool \ libudns-dev \ python3 \ python3-dev \ python3-bson \ python3-yaml \ python3-boto3 \ ttf-liberation
Sau khi tất cả các gói build dependencies đã được cài đặt thành công, bạn hãy tải về dionaea theo như các câu lệnh dưới đây (lưu ý: nếu bạn nào chưa cài đặt git thì các bạn nên cài đặt theo câu lệnh sau):
sudo apt install git
Sau đó, bạn có thể tải source code theo liên kết dưới đây và chứa trong thư mục /opt theo các câu lệnh dưới đây:
cd opt sudo git clone https://github.com/DinoTools/dionaea.git cd dionaea
Sau khi tải xong, bạn hãy tạo một thư mục build và chạy lệnh cmake để thiết lập quy trình build.
mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/dionaea
Cài đặt gói build trong dionaea |
Bây giờ bạn có thể chạy lệnh make để build và chạy lệnh make install để cài đặt honeypot.
make sudo make install
Honeypot có thể được tìm thấy trong thư mục /opt/dionaea.
Build các gói module của C |
Cài đặt honeypot dionaea |
Các bạn có thể kiểm tra xem cài đặt có thành công không bằng câu lệnh dưới đây:
sudo /opt/dionaea/bin/dionaea --help
Dionaea đã cài đặt thành công |
Được rồi, bây giờ chúng ta sẽ bắt đầu cấu hình file dionaea.cfg trong Dionaea. File này chỉ định nơi malware/binaries sẽ bị loại bỏ, các interfaces và port đang lắng nghe. Bạn có thể để nó ở chế độ mặc định nhưng nên nhớ rằng file log sẽ rất lớn.
file dionaea.cfg |
Vì vậy, dionaea có nhiều services khác nhau cho phép chúng ta có thể sử dụng honeypot để thực hiện việc giăng bẫy nhiều phương thức tấn công và bạn sẽ có nhiều mẫu malware hơn. Các tuỳ chỉnh này có thể luôn có sẵn và bạn có thể kích hoạt các dịch vụ này. Bằng cách điều chỉnh trong file yaml, bạn có thể tuỳ chỉnh dịch vụ và cách mà nó xuất hiện đối với hacker/bot. Ví dụ, bạn muốn giăng bẫy lỗ hổng SMB để lấy mẫu malware nổi tiếng WannaCry, bạn sẽ tuỳ chỉnh trên server để cho phép lỗ hổng SMB xảy ra. Chúng ta có thể bật service thông qua câu lệnh dưới đây:
cd /opt/dionaea/etc/dionaea sudo vim services-enabled/smb.yaml
Nếu bạn muốn kích hoạt thiết lập Windows 7 mặc định, chỉ cần bỏ # Win7.
file smb.yaml |
Bước cuối cùng là chúng ta chạy honeypot bằng câu lệnh dưới đây:
sudo /opt/dionaea/bin/dionaea -D
thiết lập honeypot |
Tóm tắt
Trên đây mình đã giới thiệu về khái niệm Honeypot và hướng dẫn cho các bạn tự thiết lập một honeypot cho riêng hệ điều hành Ubuntu 16.04. Cám ơn các bạn đã xem bài viết.