{
	"id": "5dea1c2a-7cb7-4822-ab93-309a3b0246de",
	"created_at": "2026-04-06T00:21:47.948929Z",
	"updated_at": "2026-04-10T03:37:19.208082Z",
	"deleted_at": null,
	"sha1_hash": "6a7ef30b7ef4ecd4c85430aaa1234ad2c1493b3d",
	"title": "Là 1937CN hay OceanLotus hay Lazarus …",
	"llm_title": "",
	"authors": "",
	"file_creation_date": "0001-01-01T00:00:00Z",
	"file_modification_date": "0001-01-01T00:00:00Z",
	"file_size": 9685767,
	"plain_text": "Là 1937CN hay OceanLotus hay Lazarus …\r\nBy m4n0w4r\r\nPublished: 2018-11-03 · Archived: 2026-04-05 18:38:25 UTC\r\nVô tình bắt gặp trên twitter của @blu3_team (Tôi không rõ sao acc này lại rất hay có được những\r\nmẫu target vào VN), tôi tò mò muốn biết kĩ thuật đằng sau nó là gì bởi tôi thấy nó tương tự như một bài\r\nmà tôi đã đọc https://medium.com/@Sebdraven/malicious-document-targets-vietnamese-officials-acb3b9d8b80a, và vì xem comment, người nghi ngờ là OceanLotus, người khẳng định là 1937CN\r\nTeam…\r\nXin lỗi vì bài viết khá dài, tôi cũng không biết làm thế nào để cho nó ngắn hơn :D, nếu bạn không có\r\nthời gian để đọc hết thì bấm một like rồi chuyển trang khác. Phần tôi, một là do tôi thích viết, mặt khác\r\ncũng là cách tôi tự rèn kĩ năng … phần nữa là vì tôi biết rằng chỉ khi mình thực sự bắt tay vào phân tích\r\nmới thấy nó khác xa với những gì mình đọc bằng mắt và tưởng tượng….\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 1 of 35\n\n1. Môi trường thực hiện\r\n1. Máy ảo REMnux (https://remnux.org/): sử dụng để phân tích files, giả lập Internet services và capture network\r\ntraffic.\r\n2. Máy ảo Win10x64 (tự build): sử dụng cho Static \u0026 Dynamic Analysis\r\na. Cài đặt sẵn các cộng cụ debugger \u0026 disassembler: OllyDbg, x64dbg, IDA …\r\nb. Cài đặt sẵn Office 2013.\r\nc. Enable tải khoản Administrator (mặc định tài khoản này bị disable) và đăng nhập bằng tải khoản này để thực\r\nhiện phân tích.\r\n2. Phân tích theo hành vi\r\nKhi mở tài liệu trên máy ảo Win10, sẽ thấy ứng dụng EQNEDT32.exe được gọi, sau đó xuất hiện thêm hai tiến\r\ntrình khác là QcConsol.exe và dllhst3g.exe:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 2 of 35\n\nTrên máy ảo REMnux chạy Wireshark để capture traffic từ máy ảo Win10, thu được kết quả kết nối tới C2 server\r\nlà login[dot]dangquanwatch[dot]com:\r\nLog của Noriben (https://github.com/Rurik/Noriben) cung cấp:\r\nPress enter or click to view image in full size\r\n3. Phân tích sample trên REMnux\r\nSample nhận được là một file có định dạng RTF:\r\nSử dụng rtfobj (https://github.com/decalage2/oletools), biết được sample này có 3 objects:\r\nObject tại id 0 có FileName là 8.t, khi mở tài liệu thì file này sẽ được drop vào thư mục Temp trên máy. Hai object\r\ncòn lại được nhận diện là “Not a well formed ole object”.\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 3 of 35\n\nDùng luôn rtfobj để dump toàn bộ các objects này:\r\nKiểm tra thông tin từng file. Đầu tiên là\r\nb45087ad4f7d84758046e9d6eb174530fee98b069105a78f124cbde1ecfb0415_8.t:\r\nTheo data như trên hình thì khả năng file này đã bị mã hóa và sẽ được giải mã sau khi drop vào thự mục Temo.\r\nVới file b45087ad4f7d84758046e9d6eb174530fee98b069105a78f124cbde1ecfb0415_object_000C11FB.raw:\r\nCăn cứ vào dấu hiệu như trên hình thì khả năng file RTF có thể sẽ sử dụng exploit CVE-2017–11882\r\n(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11882).\r\nKiểm tra file còn lại là\r\nb45087ad4f7d84758046e9d6eb174530fee98b069105a78f124cbde1ecfb0415_object_000C11E9.raw:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 4 of 35\n\nPress enter or click to view image in full size\r\nFile này khả năng sẽ chứa đoạn shellcode để thực hiện sau khi máy nạn nhân bị exploit. Thông tin sợ bộ là như\r\nvậy, tiếp theo ta sẽ thực hiện debug sample này để xem file 8.t được sử dụng như thế nào.\r\n4. Debug maldoc trên Windows10\r\nLiên quan tới exploit CVE-2017–11882, khi chạy sample, Winword.exe sẽ gọi tiến trình EQNEDT32.exe để\r\nhandle OLE object. Tuy nhiên, Winword.exe không phải là process cha của EQNEDT32.exe, tiến trình\r\nEQNEDT32.exe được gọi bởi Winword.exe thông qua việc sử dụng COM Object như hình dưới đây:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 5 of 35\n\nhttps://embedi.com/blog/skeleton-closet-ms-office-vulnerability-you-didnt-know-about/\r\nNhư vậy, bằng cách nào đó ta phải attach được EQNEDT32.exe vào debugger để debug. Ở đây, tôi sử dụng một\r\nkĩ thuật của M$ là Image File Execution Options (IFEO:\r\nhttps://blogs.msdn.microsoft.com/mithuns/2010/03/24/image-file-execution-options-ifeo/).\r\nVào Registry, tạo một key như sau hoặc nếu cài Word2013 trở lên thì khả năng có sẵn key này (vì tôi thấy trên\r\nmáy tôi có sẵn):\r\nTiếp theo, tạo một string value để khởi chạy debugger khi EQNEDT32.exe được thực thi, qua đó sẽ attach đươc\r\ndebugger vào tiến trình của EQNEDT32.exe.\r\nVới thiết lập như trên, kiểm tra lại bằng Autoruns sẽ như sau:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 6 of 35\n\nLưu ý: khi thiết lập IFEO, các thiết lập sẽ tự động bộ giữa hai key:\r\nHKLM\\Software\\Wow6432Node\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options và\r\nHKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\r\nTiếp theo, mở WINWORD.EXE, sau đó từ Winword mở tài liệu malicious rtf. Lúc này, tiến trình EQNEDT32.exe\r\ncũng sẽ được khởi chạy và được attach vào debugger:\r\nTại debugger, ta đang dừng lại tại EP(Entry Point) của EQNEDT32.exe:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 7 of 35\n\nKiểm tra ta thấy file 8.t đã được drop vào thư mục Temp:\r\nĐặt BP tại API CreatFileW, sau đó nhấn F9 để thực thi, ta thấy chương trình sẽ thực hiện mở file 8.t để đọc nội\r\ndung:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 8 of 35\n\nTrace qua hàm này và return, sẽ tới shellcode của exploit:\r\nGọi hàm GetFileSize để lấy kích thước của 8.t:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 9 of 35\n\nSau đó, gọi hàm VirtualAlloc để thực hiện cấp phát một vùng nhớ:\r\nVùng nhớ được cấp phát trỏ bởi thanh ghi EAX, follow theo vùng nhớ này để xem code sẽ tác động gì lên nó:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 10 of 35\n\nHàm ReadFile được gọi để đọc ra nội dung của 8.t:\r\nToàn bộ nội dung của 8.t được đọc vào vùng nhớ đã được cấp phát ở trên:\r\nPress enter or click to view image in full size\r\nTiếp tục trace sẽ tới đoạn shellcode thực hiện giải mã toàn bộ nội dung của file 8.t trong memory tại 0x4F70000:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 11 of 35\n\nSau vài lần trace code sẽ thấy được dấu hiệu MZ, nhưng vậy file 8.t sau khi giải mà sẽ là một PE file:\r\nCho thực hiện xong toàn bộ vòng lặp giải mã trên sẽ có được một PE hoàn chỉnh trong bộ nhớ:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 12 of 35\n\nDump PE mới này và lưu lại để thực hiện phân tích sau:\r\nFile dump được là một exe file:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 13 of 35\n\nTiếp tục debug, shellcode gọi tiếp hàm VirtualAlloc để cấp phát một vùng nhớ khác tại địa chỉ 0x5170000:\r\nPE được giải mã tại vùng nhớ 0x4F70000 sẽ được copy vào vùng nhớ mới được cấp phát ở trên:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 14 of 35\n\nDump vùng mem trên ra bộ nhớ, và vì file này đã được mapping trên memory và có thay đổi, nên sử dụng cộng cụ\r\npe_unmapper của hasherezade (https://github.com/hasherezade/pe_recovery_tools/tree/master/pe_unmapper) để\r\nchuyển đổi từ virtual format về định dạng raw:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 15 of 35\n\nDebug tiếp, shellcode gọi hàm GetModuleFileNameA được gọi để lấy đường dẫn của EQNEDT32.exe:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 16 of 35\n\nSử dụng CreateProcessA (CreateProcessInternalA) để tạo một process EQNEDT32.exe khác ở trạng thái\r\nSuspended. Do đang thiết lập tính năng IFEO nên ta sẽ thấy process của debugger thay vì là process\r\nEQNEDT32.exe:\r\nNote: Nếu thực hiện lại, tới bước này thì sử dụng Autoruns để bỏ việc sử dụng IFEO và cho thực hiện hàm\r\nCreateProcessA, ta sẽ có được kết quả đúng như hình:\r\nĐoạn code tiếp theo sẽ lấy thread context bằng GetThreadContext, đọc dữ liệu từ vùng nhớ với hàm\r\nReadProcessMemory, gọi VirtualProtectEx (PAGE_EXECUTE_READWRITE 0x40) để thay đổi trang thái của\r\nvùng nhớ trên Suspend process, và cuối cùng shellcode ghi đè lên bằng PE tại địa chỉ 0x5170000:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 17 of 35\n\nThực hiện đặt lại thread context bằng SetThreadContext, cuối cùng shellcode thực hiện hàm ResumeThread để\r\nlaunch PE mới:\r\nTổng kết lại, toàn bộ quá trình thực hiện của shellcode là giải mã file 8.t thành một PE mới, sau đó thực\r\nhiện nhân bản sang một vùng nhớ khác, thực hiện tạo một fork process mới là EQNEDT32.exe, cuối\r\ncùng áp dụng kĩ thuật runPE để launch EQNEDT32.exe mới đã bị ghi đè code bởi nội dung của file\r\n8.t.\r\n5. Phân tích binary đã dump\r\nNhư đã biết khi phân tích dynamic, sau khi resume thread thì malware sẽ drop ra disk các file sau: QcConsol.exe;\r\nQcLite.dll; stdole.tlb vào thư mục %AppData%\\Microsoft\\Windows\\Printer Shortcuts.\r\nỞ trên tôi có 2 file đã dump là _04F70000.mem và drop_bin.exe (được unmap bằng công cụ pe_unmapper).\r\nTuy nhiên, chỉ có file _04F70000.mem là thực thi được bình thường, còn file drop_bin.exe thì bị crash (mặc dù\r\nlúc fix, kiểm tra bằng PE bear thấy mọi thứ đều ok. Tôi có chat hỏi về vấn đề này thì nhận được trả lời của\r\nhasherezade như sau: “dumped samples may not always work, so it is normal”).\r\nGet m4n0w4r’s stories in your inbox\r\nJoin Medium for free to get updates from this writer.\r\nRemember me for faster sign in\r\nMở IDA và load file _04F70000.exe (đổi tên lại từ file .mem), dừng lại tại WinMain():\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 18 of 35\n\nBinary lấy đường dẫn tới thư mục %AppData%\\Microsoft\\Windows\\Printer Shortcuts:\r\nCấu thành đường dẫn của các file:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 19 of 35\n\nTới đoạn code thực hiện call sub_331860 3 lần để thực hiện drop các file trên vào thư mục chỉ định. Tôi đổi tên\r\nsub này thành thành drop_file như hình:\r\nĐi sâu vào hàm này sẽ gặp vòng lặp xor thực hiện decode bytes, sau đó là đoạn code thực hiện WriteFile vào thư\r\nmục:\r\nKết quả sau khi thực hiện hàm drop_file đầu tiên, có được file QcConsol.exe:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 20 of 35\n\nĐây là một file hợp lệ, có chữ kí và được phát triển bởi hãng McAfee, Inc.:\r\nLời gọi hàm drop_file thứ 2 sẽ drop ra file QcLite.dll, file này không có thông tin gì về Signature cũng như info,\r\nnhư vậy malicious code sẽ nằm ở file này:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 21 of 35\n\nLời gọi hàm drop_file thứ 3 sẽ drop ra file stdole.tlb. Thông tin về .tlb có thể xem tại đây\r\n(https://docs.microsoft.com/en-us/windows/desktop/midl/com-dcom-and-type-libraries):\r\nTiếp tục, cấu thành một command như sau:\r\nCuối cùng, gọi hàm WinExec để thực thi QcConsol.exe với tham số là “-LowIntegrityServer”:\r\nNhư vậy, với việc thực thi thành công, QcConsol.exe chắc chắn sẽ phải load QcLite.dll vào để thưc thi malicious\r\ncode.\r\n6. DLL hijacking — Phân tích file QcConsol.exe\r\nLoad file vào IDA nhận được thông báo:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 22 of 35\n\nĐể nạp được QcLite.dll, QcConsol.exe sử dụng API LoadLibraryW và sau đó gọi GetProcAddress để lấy địa chỉ\r\ncủa hàm. Về bản chất khi thực hiện nạp module thì đồng thời code của dll cũng sẽ được thực hiện bắt đầu từ\r\nDllMain:\r\n7. Phân tích sơ bộ file QcLite.dll\r\nGọi hàm VirtualAlloc để cấp phát một vùng nhớ:\r\nLấy đường dẫn đầy đủ tới QcLite.dll:\r\nDll này sẽ load file .tlb:\r\nGọi hàm CreatFileW để mở file này (lpFileName trỏ tới stdole.tlb):\r\nLấy kích thước của stdole.tlb:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 23 of 35\n\nPress enter or click to view image in full size\r\nĐọc dữ liệu từ stdole.tlb và lưu vào vùng nhớ đã cấp phát ở trên:\r\nThực hiện vòng lặp sử dụng xor để decode toàn bộ dữ liệu của stdole.tlb đã được copy lên memory:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 24 of 35\n\nKết quả có được sau khi decode, nghi ngờ khả năng đây có thể sẽ là một PE file khác:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 25 of 35\n\nQua rất nhiều rop_chain (tôi đoán thế :D) thì sẽ nhảy tới vùng nhớ trên để thực thi code (Cách nhanh nhất thì các\r\nbạn có thể đặt một HWBP on Execute tại 4 bytes đầu 0x50 0x68 0xA7 0x45; sau đó nhấn F9 là tới):\r\nShellcode tại 0x01A10000 sẽ truy cập PEB (Process Environment Block) để lấy ra địa chỉ base address của\r\nkernel32.dll:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 26 of 35\n\nSau khi có được base address của kernel32.dll, shellcode sẽ tìm địa chỉ của hàm API GetProcAddress:\r\nVới hàm API GetProcAddress, shellcode sẽ lấy địa chỉ của các hàm API khác là LoadLibraryA, VirtualAlloc,\r\nFreeLibraryA, Sleep:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 27 of 35\n\nSử dụng hàm VirtualAlloc để cấp phát một vùng nhớ và gọi hàm decode_data() để decode bytes trong shellcode\r\nvào vùng nhớ cấp phát:\r\nTiếp tục sử dụng VirtualAlloc để cấp phát thêm một vùng nhớ khác với kích thước lấy từ vùng nhớ trên (dwSize =\r\nSizeOfImage = PE_header + 0x50) và thiết lập vùng nhớ mới này là PAGE_EXECUTE_READWRITE:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 28 of 35\n\nSau khi lấy được section header tại vùng nhớ 0x01880000 ở trên, thực hiện vòng lặp để copy toàn bộ các section\r\ndata sang vùng nhớ mới được cấp phát:\r\nTiến hành resolve toàn bộ địa chỉ API ghi lại vào IAT của vùng nhớ mới:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 29 of 35\n\nSau khi lấy địa chỉ của toàn bộ các API cần thiết, sử dụng lệnh call để nhảy tới vùng nhớ để thực hiện lệnh:\r\nTiếp tục debug xuyên qua nhiều lớp call sẽ tới đoạn gọi hàm CreateThread để tạo một thread mới:\r\nĐi tới ThreadFunction tại địa chỉ 0x01EE35D0. Code tại đây thực hiện lấy thông tin binary có sẵn của Windows\r\nlà dllhst3g.exe:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 30 of 35\n\nXem tổng quan code thì thấy có đoạn code liên quan đến C2 (login[dot]dangquanwatch[dot]com):\r\nTạo một thread khác làm nhiệm vụ tạo Persistent trong Registry\r\nHKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run:\r\nGọi hàm WritePrivateProfileStringW để ghi string vào file tại “C:\\ProgramData\\desktop.ini”:\r\nThiết lập thuộc tính cho file với hàm SetFileAttributesW:\r\nTạo một Mutex {986AFDE7-F299–4A7D-BBF4-CA756FC01F1B65027208}, tuy nhiên handle tới mutext này sẽ\r\nbị đóng ngay sau đó:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 31 of 35\n\nTiếp tục sử dụng bộ API CreateFileW, GetFileSize, VirtualAlloc, ReadFile để một lần nữa đọc ra nội dung được\r\nlưu trong file %AppData%\\Microsoft\\Windows\\Printer Shortcuts\\stdole.tlb và thực hiện decode dữ liệu giống\r\nnhư đã nói ở bước trước:\r\nPress enter or click to view image in full size\r\nThực hiện kĩ thuật inject code bằng cách gọi hàm CreateProcessW để khởi động tiến trình dllhst3g.exe ở trạng\r\nthái Suspended:\r\nCấp phát vùng nhớ trong tiến trình này thông qua hàm VirtualAllocEx:\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 32 of 35\n\nGọi hàm WriteProcessMemory để ghi dữ liệu từ 0x00F90000 (buffer chứa data đã decode của stdole.tlb) vào\r\nvùng nhớ đã cấp phát tại tiến trình dllhst3g.exe, đặt lại thread context và resume thread. Lúc này dllhst3g.exe sẽ\r\nthực thi bình thường và thực thi luôn malicious code:\r\n8. Debug dllhst3g.exe\r\nHoàn thành xong việc inject code vào dllhst3g.exe sẽ gọi ExitProcess để kết thúc tiến trình QcConsol.exe và tiếp\r\ntục thực thi tiến trình dllhst3g.exe. Do dllhst3g.exe bị inject code của file stdole.tlb sau khi decode trên bộ nhớ,\r\nnên cách thức hoạt động cũng tương tự. Để có thể debug xem dllhst3g.exe sẽ làm gì thì trước khi thực hiện bước\r\nWriteProcessMemory ở trên, sửa 2 bytes đầu là 0x50 0x68 thành 0xEB 0xFE. Sau khi resume thread, mở một\r\ndebugger khác để attach và khôi phục lại 2 bytes đã bị sửa.\r\nLúc này, debug sẽ thấy code tạo một mutext và đọc lại nội dung từ file “C:\\ProgramData\\desktop.ini” và decode\r\nstring trong file này thành:\r\nGắn thêm tham số: 0206F4E4 00D80B30 UNICODE\r\n“”C:\\Users\\REM\\AppData\\Roaming\\Microsoft\\Windows\\Printer Shortcuts\\QcConsol.exe” -LowIntegrityServer”\r\nvà gọi hàm WinExec để thực thi\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 33 of 35\n\nTiến trình mới này sẽ kết nối tới C2 (Ở đây tôi đang lái traffic về REMnux):\r\nTại máy REMnux, sử dụng wireshark sẽ capture được thông tin như hình:\r\n9. IOCs\r\nDomain: login[dot]dangquanwatch[dot]com / IP: 185.77.129.142\r\nRTF: b45087ad4f7d84758046e9d6eb174530fee98b069105a78f124cbde1ecfb0415\r\n8.t: 6328dd14eda2ef983810c0c7b3af47298b5998e4fa52d97b204be2818f08bb69\r\nBinary:\r\nQcConsol.exe: 9f3114e48dd0245467fd184bb9655a5208fa7d13e2fe06514d1f3d61ce8b8770\r\nQcLite.dll: 5b652205b1c248e5d5fc0eb5f53c5754df829ed2479687d4f14c2e08fbf87e76\r\nOthers:\r\nstdole.tlb: ba620bad026f25ba6decc4bdcefc6415b563503cf9eaddc4e1137a5871d5cee2\r\ndesktop.ini: 31c2be9ca29fb2bd8096720c221ee9682f013eee119b02d390d6efc12684392d\r\nRegistry:\r\nHKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run \u0026\r\nHKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\r\nValueName: Windows HD Audio Manager\r\nData: %AppData%\\MICROS~1\\Windows\\PRINTE~1\\QcConsol.exe -LowIntegrityServer\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 34 of 35\n\nSource: https://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nhttps://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241\r\nPage 35 of 35\n\n  https://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241    \nSau vài lần trace code sẽ thấy được dấu hiệu MZ, nhưng vậy file 8.t sau khi giải mà sẽ là một PE file:\nCho thực hiện xong toàn bộ vòng lặp giải mã trên sẽ có được một PE hoàn chỉnh trong bộ nhớ:\n   Page 12 of 35  \n\n  https://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241   \nTiếp tục debug, shellcode gọi tiếp hàm VirtualAlloc để cấp phát một vùng nhớ khác tại địa chỉ 0x5170000:\nPE được giải mã tại vùng nhớ 0x4F70000 sẽ được copy vào vùng nhớ mới được cấp phát ở trên:\n   Page 14 of 35",
	"extraction_quality": 1,
	"language": "VI",
	"sources": [
		"Malpedia"
	],
	"references": [
		"https://tradahacking.vn/l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241"
	],
	"report_names": [
		"l%C3%A0-1937cn-hay-oceanlotus-hay-lazarus-6ca15fe1b241"
	],
	"threat_actors": [
		{
			"id": "af509bbb-8d18-4903-a9bd-9e94099c6b30",
			"created_at": "2023-01-06T13:46:38.585525Z",
			"updated_at": "2026-04-10T02:00:03.030833Z",
			"deleted_at": null,
			"main_name": "APT32",
			"aliases": [
				"OceanLotus",
				"ATK17",
				"G0050",
				"APT-C-00",
				"APT-32",
				"Canvas Cyclone",
				"SeaLotus",
				"Ocean Buffalo",
				"OceanLotus Group",
				"Cobalt Kitty",
				"Sea Lotus",
				"APT 32",
				"POND LOACH",
				"TIN WOODLAWN",
				"Ocean Lotus"
			],
			"source_name": "MISPGALAXY:APT32",
			"tools": [],
			"source_id": "MISPGALAXY",
			"reports": null
		},
		{
			"id": "f21d7691-a720-46bb-81d7-11edb9f73eba",
			"created_at": "2023-11-08T02:00:07.126478Z",
			"updated_at": "2026-04-10T02:00:03.420826Z",
			"deleted_at": null,
			"main_name": "1937CN",
			"aliases": [],
			"source_name": "MISPGALAXY:1937CN",
			"tools": [],
			"source_id": "MISPGALAXY",
			"reports": null
		},
		{
			"id": "870f6f62-84f5-48ca-a18e-cf2902cd6924",
			"created_at": "2022-10-25T15:50:23.303818Z",
			"updated_at": "2026-04-10T02:00:05.301184Z",
			"deleted_at": null,
			"main_name": "APT32",
			"aliases": [
				"APT32",
				"SeaLotus",
				"OceanLotus",
				"APT-C-00",
				"Canvas Cyclone"
			],
			"source_name": "MITRE:APT32",
			"tools": [
				"Mimikatz",
				"ipconfig",
				"Kerrdown",
				"Cobalt Strike",
				"SOUNDBITE",
				"OSX_OCEANLOTUS.D",
				"KOMPROGO",
				"netsh",
				"RotaJakiro",
				"PHOREAL",
				"Arp",
				"Denis",
				"Goopy"
			],
			"source_id": "MITRE",
			"reports": null
		},
		{
			"id": "5da6b5fd-1955-412a-81aa-069fb50b6e31",
			"created_at": "2025-08-07T02:03:25.116085Z",
			"updated_at": "2026-04-10T02:00:03.668978Z",
			"deleted_at": null,
			"main_name": "TIN WOODLAWN",
			"aliases": [
				"APT32 ",
				"Cobalt Kitty",
				"OceanLotus",
				"WOODLAWN "
			],
			"source_name": "Secureworks:TIN WOODLAWN",
			"tools": [
				"Cobalt Strike",
				"Denis",
				"Goopy",
				"JEShell",
				"KerrDown",
				"Mimikatz",
				"Ratsnif",
				"Remy",
				"Rizzo",
				"RolandRAT"
			],
			"source_id": "Secureworks",
			"reports": null
		},
		{
			"id": "2439ad53-39cc-4fff-8fdf-4028d65803c0",
			"created_at": "2022-10-25T16:07:23.353204Z",
			"updated_at": "2026-04-10T02:00:04.55407Z",
			"deleted_at": null,
			"main_name": "APT 32",
			"aliases": [
				"APT 32",
				"APT-C-00",
				"APT-LY-100",
				"ATK 17",
				"G0050",
				"Lotus Bane",
				"Ocean Buffalo",
				"OceanLotus",
				"Operation Cobalt Kitty",
				"Operation PhantomLance",
				"Pond Loach",
				"SeaLotus",
				"SectorF01",
				"Tin Woodlawn"
			],
			"source_name": "ETDA:APT 32",
			"tools": [
				"Agentemis",
				"Android.Backdoor.736.origin",
				"AtNow",
				"Backdoor.MacOS.OCEANLOTUS.F",
				"BadCake",
				"CACTUSTORCH",
				"CamCapture Plugin",
				"CinaRAT",
				"Cobalt Strike",
				"CobaltStrike",
				"Cuegoe",
				"DKMC",
				"Denis",
				"Goopy",
				"HiddenLotus",
				"KOMPROGO",
				"KerrDown",
				"METALJACK",
				"MSFvenom",
				"Mimikatz",
				"Nishang",
				"OSX_OCEANLOTUS.D",
				"OceanLotus",
				"PHOREAL",
				"PWNDROID1",
				"PhantomLance",
				"PowerSploit",
				"Quasar RAT",
				"QuasarRAT",
				"RatSnif",
				"Remy",
				"Remy RAT",
				"Rizzo",
				"Roland",
				"Roland RAT",
				"SOUNDBITE",
				"Salgorea",
				"Splinter RAT",
				"Terracotta VPN",
				"Yggdrasil",
				"cobeacon",
				"denesRAT",
				"fingerprintjs2"
			],
			"source_id": "ETDA",
			"reports": null
		},
		{
			"id": "2c7ecb0e-337c-478f-95d4-7dbe9ba44c39",
			"created_at": "2022-10-25T16:07:23.690871Z",
			"updated_at": "2026-04-10T02:00:04.709966Z",
			"deleted_at": null,
			"main_name": "Goblin Panda",
			"aliases": [
				"1937CN",
				"Conimes",
				"Cycldek",
				"Goblin Panda"
			],
			"source_name": "ETDA:Goblin Panda",
			"tools": [
				"8.t Dropper",
				"8.t RTF exploit builder",
				"8t_dropper",
				"Agent.dhwf",
				"BackDoor-FBZT!52D84425CDF2",
				"BlueCore",
				"BrowsingHistoryView",
				"ChromePass",
				"CoreLoader",
				"Custom HDoor",
				"Destroy RAT",
				"DestroyRAT",
				"DropPhone",
				"FoundCore",
				"HDoor",
				"HTTPTunnel",
				"JsonCookies",
				"Kaba",
				"Korplug",
				"LOLBAS",
				"LOLBins",
				"Living off the Land",
				"NBTscan",
				"NewCore RAT",
				"PlugX",
				"ProcDump",
				"PsExec",
				"QCRat",
				"RainyDay",
				"RedCore",
				"RedDelta",
				"RoyalRoad",
				"Sisfader",
				"Sisfader RAT",
				"Sogu",
				"TIGERPLUG",
				"TVT",
				"Thoper",
				"Trojan.Win32.Staser.ytq",
				"USBCulprit",
				"Win32/Zegost.BW",
				"Xamtrav",
				"ZeGhost",
				"nbtscan"
			],
			"source_id": "ETDA",
			"reports": null
		}
	],
	"ts_created_at": 1775434907,
	"ts_updated_at": 1775792239,
	"ts_creation_date": 0,
	"ts_modification_date": 0,
	"files": {
		"pdf": "https://archive.orkl.eu/6a7ef30b7ef4ecd4c85430aaa1234ad2c1493b3d.pdf",
		"text": "https://archive.orkl.eu/6a7ef30b7ef4ecd4c85430aaa1234ad2c1493b3d.txt",
		"img": "https://archive.orkl.eu/6a7ef30b7ef4ecd4c85430aaa1234ad2c1493b3d.jpg"
	}
}