Categories
Tags
2025 Active-Directory Adobe ColdFusion Apache ASP DotNet Aug 2024 AWS B2R Binary Binary Hijacking Broken Access Control Burpsuite Caido Clickjacking Cloud Crackmes Cryptography CVE-2009-3548 CVE-2014-1812 CVE-2024-28397 CVE-2024-32019 CVE-2025-24893 Debugging Easy Email-Forensics Engineering Eternal Blue Exploitation Feb File-upload-vulnerabilities Flare-On Forensics Free FTP HACK HAVOC HTB HttpFileServer IDA IIS impacket Industrial-Control-System Information Disclosure js2py KPMG Linux Malware-Analysis Metasploit Microsoft-Access-database Misc Mobile MS10-092 MS14-025 MS16-032 MS17-010 npbackup nsudo Oct 2024 Operational-Technology OSINT Path-Injection Path-Traversal-To-RCE PMA_Labs Programming PwnedLabs RCE Retired Reverse Reverse Engineering Reversing Runas-Abuse S3 S3-to-AccountID Scripting Sherlock SMB Snyk SSRF Steg Telnet Tomcat VIP Web Windows x64dbg xwiki
2773 words
14 minutes
PMA - Lab Write-up 2026
- Category: Malware Analysis and Reverse Engineering
- Difficulty: Easy/Medium/Hard
- File:- PracticalMalwareAnalysis-Labs.tar.gz
1. Basic Static Techniques
Lab 1-1
1. Upload the files to http://www.VirusTotal.com/ and view the reports. Does either file match any existing antivirus signatures?
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~/]
ββ$ sha256sum Lab01-01.exe
58898bd42c5bd3bf9b1389f0eee5b39cd59180e8370eb9ea838a0b327bd6fe47 Lab01-01.exe
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~/]
ββ$ sha256sum Lab01-01.dll
f50e42c8dfaab649bde0398867e930b86c2a599e8db83b8260393082268f2dba Lab01-01.dll
- Lab01-01.exe
- Code insights:
- The sample is a file infector and system hijacker that employs DLL search order hijacking through
typosquatting. - It copies a malicious payload
Lab01-01.dllto'%WINDIR%\System32\kerne132.dll'(mimicking the legitimatekernel32.dll). - The malware then recursively scans the
C:drive for executable files (.exe) and modifies their PE headers, specifically patching the Import Address Table (IAT) to replace references to βkernel32.dllβ with the maliciouskerne132.dll. - This ensures the malicious library is loaded whenever infected applications are executed.
- The sample is a file infector and system hijacker that employs DLL search order hijacking through

- Lab01-01.dll (
kerne132.dll)

2. When were these files compiled?
- We can see these info inside the details tab of VT,
- Lab-01-01.exe
Creation Time: 2010-12-19 16:16:19 UTC
First Seen In The Wild: 2012-01-08 02:19:06 UTC
First Submission: 2012-02-16 07:31:54 UTC
Last Submission: 2026-02-02 07:25:44 UTC
Last Analysis: 2026-02-01 03:58:36 UTC
- Lab-01-01.dll
Creation Time: 2010-12-19 16:16:38 UTC
First Seen In The Wild: 2010-12-19 09:16:38 UTC
First Submission: 2011-07-04 19:57:48 UTC
Last Submission: 2026-02-02 07:27:31 UTC
Last Analysis: 2026-01-31 11:23:05 UTC
3. Are there any indications that either of these files is packed or obfuscated. If so, what are these indicators?
- We can use
Detect it Easy (DiE)for this task, it has entropy section which shows the randomness of each section, which can be indicators to see obfuscation. - Lab-01-01.exe (Not Packed)


- Lab 01-01.dll (Not Packed)


4. Do any imports hint at what this malware does? If so, which imports are they?
- To see imports we can use
pestudio, - Lab-01-01.exe
- Imports = Windows API functions that the program calls from DLLs (like KERNEL32.dll).
Start
βββΊ CopyFileA()
βββΊ Drop malicious DLL
"Lab01-01.dll"
β
"%WINDIR%\\System32\\kerne132.dll"
βββΊ FindFirstFileA("C:\\*")
βββΊ FindNextFileA()
βββΊ If directory
β βββΊ Recurse (FindFirstFileA)
βββΊ If *.exe
βββΊ CreateFileA(target.exe)
βββΊ CreateFileMappingA()
βββΊ MapViewOfFile()
βββΊ Parse PE headers
βββΊ Locate Import Table
βββΊ Replace:
"kernel32.dll"
β
"kerne132.dll"
βββΊ UnmapViewOfFile()
βββΊ CloseHandle()
βββΊ Repeat until no files left
βββΊ FindClose()
End

- Lab-01-01.dll
DLL Loaded (via infected EXE)
βββΊ DllMain(DLL_PROCESS_ATTACH)
βββΊ CreateMutexA()
βββΊ OpenMutexA()
βββΊ Ensure single instance (avoid double execution)
βββΊ Sleep()
βββΊ Timing / sandbox evasion
βββΊ WSAStartup()
βββΊ Initialize Winsock
βββΊ socket()
βββΊ Create TCP socket
βββΊ inet_addr()
βββΊ Convert hardcoded IP address
βββΊ htons()
βββΊ Convert hardcoded port
βββΊ connect()
βββΊ Connect to remote C2 server
βββΊ send()
βββΊ Transmit host data / beacon
βββΊ recv()
βββΊ Receive attacker commands / response
βββΊ shutdown()
βββΊ Graceful connection close
βββΊ closesocket()
βββΊ Release socket
βββΊ WSACleanup()
βββΊ Cleanup Winsock
βββΊ CreateProcessA()
βββΊ Execute command or spawn process
βββΊ CloseHandle()
End

5. Are there any other files or host-based indicators that you could look for on infected systems?
- Examining the strings contained within Lab01-01.exe more closely reveals that it is referencing a file called
C:\windows\system32\kerne132.dll. - This is a very subtle misspelling of the legitimate
Kernel32.dllfile (notice the use ofΒ 1Β instead ofΒ l) because of this it is likely malicious and we are able to use this to search for infected systems. - I used
flosstool for strings analysis,
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~/]
ββ$ /opt/floss Lab01-01.exe
INFO: floss: extracting static strings
finding decoding function features: 100%|ββββββββββββββ| 13/13 [00:00<00:00, 1565.44 functions/s, skipped 1 library functions (7%)]
INFO: floss.stackstrings: extracting stackstrings from 9 functions
extracting stackstrings: 100%|βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ| 9/9 [00:00<00:00, 55.13 functions/s]
INFO: floss.tightstrings: extracting tightstrings from 0 functions...
extracting tightstrings: 0 functions [00:00, ? functions/s]
INFO: floss.string_decoder: decoding strings
emulating function 0x401951 (call 1/1): 100%|ββββββββββββββββββββββββββββββββββββββββββββββββ| 9/9 [00:01<00:00, 5.48 functions/s]
INFO: floss: finished execution after 6.46 seconds
INFO: floss: rendering results
FLARE FLOSS RESULTS (version v3.1.1-0-g3cd3ee6)
+------------------------+------------------------------------------------------------------------------------+
| file path | Lab01-01.exe |
| identified language | unknown |
| extracted strings | |
| static strings | 71 (648 characters) |
| language strings | 0 ( 0 characters) |
| stack strings | 0 |
| tight strings | 0 |
| decoded strings | 0 |
+------------------------+------------------------------------------------------------------------------------+
.
.
.
CloseHandle
UnmapViewOfFile
IsBadReadPtr
MapViewOfFile
CreateFileMappingA
CreateFileA
FindClose
FindNextFileA
FindFirstFileA
CopyFileA
.
.
.
KERNEL32.dll
malloc
exit
MSVCRT.dll
.
.
.
kerne132.dll
kernel32.dll
.exe
C:\*
C:\windows\system32\kerne132.dll
Kernel32.
Lab01-01.dll
C:\Windows\System32\Kernel32.dll
WARNING_THIS_WILL_DESTROY_YOUR_MACHINE
+------------------------------------+
| FLOSS STATIC STRINGS: UTF-16LE (4) |
+------------------------------------+
@jjj
@jjj
@jjj
@jjj
βββββββββββββββββββββββββ
FLOSS STACK STRINGS (0)
βββββββββββββββββββββββββ
βββββββββββββββββββββββββ
FLOSS TIGHT STRINGS (0)
βββββββββββββββββββββββββ
βββββββββββββββββββββββββββ
FLOSS DECODED STRINGS (0)
βββββββββββββββββββββββββββ
- So this is the
C:\windows\system32\kerne132.dllwhich is loaded so this can be another indicator in host system.
6. What network-based indicators could be used to find this malware on infected machines?
- Lab-01-01.dll
- Examining the strings contained within Lab01-01.dll more closely reveals that there is what appears to be an IP address.
- Because of this and the network imports, it is highly likely that this DLL contacts this IP address, and as such we are able to use this to find infected systems which have contacted
127.26.152.13.
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~/]
ββ$ /opt/floss Lab01-01.dll
INFO: floss: extracting static strings
finding decoding function features: 100%|βββββββββββββββ| 5/5 [00:00<00:00, 2200.12 functions/s, skipped 2 library functions (40%)]
INFO: floss.stackstrings: extracting stackstrings from 1 functions
extracting stackstrings: 100%|βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ| 1/1 [00:00<00:00, 40.17 functions/s]
INFO: floss.tightstrings: extracting tightstrings from 0 functions...
extracting tightstrings: 0 functions [00:00, ? functions/s]
INFO: floss.string_decoder: decoding strings
emulating function 0x10001010 (call 1/1): 100%|ββββββββββββββββββββββββββββββββββββββββββββββ| 1/1 [00:00<00:00, 60.43 functions/s]
INFO: floss: finished execution after 4.67 seconds
INFO: floss: rendering results
FLARE FLOSS RESULTS (version v3.1.1-0-g3cd3ee6)
+------------------------+------------------------------------------------------------------------------------+
| file path | Lab01-01.dll |
| identified language | unknown |
| extracted strings | |
| static strings | 37 (301 characters) |
| language strings | 0 ( 0 characters) |
| stack strings | 0 |
| tight strings | 0 |
| decoded strings | 0 |
+------------------------+------------------------------------------------------------------------------------+
βββββββββββββββββββββββββββ
FLOSS STATIC STRINGS (37)
βββββββββββββββββββββββββββ
+----------------------------------+
| FLOSS STATIC STRINGS: ASCII (37) |
+----------------------------------+
!This program cannot be run in DOS mode.
Rich
.text
`.rdata
@.data
.
.
.
CloseHandle
Sleep
CreateProcessA
CreateMutexA
OpenMutexA
KERNEL32.dll
WS2_32.dll
.
.
.
exec
sleep
hello
127.26.152.13
.
.
.
+------------------------------------+
| FLOSS STATIC STRINGS: UTF-16LE (0) |
+------------------------------------+
βββββββββββββββββββββββββ
FLOSS STACK STRINGS (0)
βββββββββββββββββββββββββ
βββββββββββββββββββββββββ
FLOSS TIGHT STRINGS (0)
βββββββββββββββββββββββββ
βββββββββββββββββββββββββββ
FLOSS DECODED STRINGS (0)
βββββββββββββββββββββββββββ
7. What would you guess is the purpose of these files?
- Based on the observations above, the executable appears to function primarily as a loader for a malicious DLL that acts as a backdoor or
remote access trojan (RAT). - Analysis of its imported functions suggests that the executable checks for the presence of
C:\Windows\System32\kerne132.dlland, if absent, copies the malicious DLL to this location to establish persistence. - Once loaded, the DLL likely initiates outbound communication to a command-and-control (C2) server at
127.26.152.13.
Lab 1-2
1. Upload the Lab01-02.exe file to http://www.VirusTotal.com/. Does it match any existing antivirus definitions?
- Lab-01-02.exe
- Code insights
- The binary is a packed (UPX) malware that establishes persistence by installing itself as a Windows service.
- It usesΒ
CreateServiceAΒ to create a service namedMalserviceconfigured to start automatically. - It also ensures only a single instance runs by creating a mutex named
HGL345. - Network capabilities are present viaΒ
InternetOpenUrlAΒ to connect toΒwww[.]malwareanalysisbook[.]com, likely for C2 communication or downloading a next-stage payload.

2. Are there any indications that this file is packed or obfuscated? If so, what are these indicators? If the file is packed, unpack it if possible.
- It is packed with
UPXwhich is a popular packer, - As we can see in entropy section, there are 2 section named
UPX, - The first UPX section (UPX1) contains the compressed payload, while the second section (UPX2) contains the unpacking stub and runtime code.


- To unpack this file we can use
upxitself,
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~/]
ββ$ upx -d Lab01-02.exe
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2024
UPX 4.2.4 Markus Oberhumer, Laszlo Molnar & John Reiser May 9th 2024
File size Ratio Format Name
-------------------- ------ ----------- -----------
16384 <- 3072 18.75% win32/pe Lab01-02.exe
Unpacked 1 file.
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~]
ββ$ mv Lab01-02.exe Lab01-02.exe.enpacked
- Lab-01-02.exe.unpacked,
- Everything is unpacked and we can see all he section.


3. Do any imports hint at this programβs functionality? If so, which imports are they and what do they tell you?
- Again, we can use
pestudioto see imports,

Start
βββΊ CreateMutexA()
βββΊ OpenMutexA()
βββΊ Ensure single instance
βββΊ GetModuleFileNameA()
βββΊ Resolve own executable path
βββΊ CreateThread()
βββΊ Run main malicious routine asynchronously
βββΊ CreateWaitableTimerA()
βββΊ SetWaitableTimer()
βββΊ WaitForSingleObject()
βββΊ Periodic || delayed execution
βββΊ OpenSCManagerA()
βββΊ Connect to Service Control Manager
βββΊ CreateServiceA()
βββΊ Install malicious service
βββΊ StartServiceCtrlDispatcherA()
βββΊ Register service entry point
βββΊ InternetOpenA()
βββΊ Initialize WinINet
βββΊ InternetOpenUrlA()
βββΊ Connect to remote URL (C2 / payload host)
4. What host- or network-based indicators could be used to identify this malware on infected machines?
- I used
flossfor strings analysis, - We got the C2 domain,hxxp://www[.]malwareanalysisbook[.]com
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~/]
ββ$ /opt/floss Lab01-02.exe.unpacked
INFO: floss: extracting static strings
finding decoding function features: 100%|βββββββββββββ| 10/10 [00:00<00:00, 4278.59 functions/s, skipped 1 library functions (10%)]
INFO: floss.stackstrings: extracting stackstrings from 6 functions
extracting stackstrings: 100%|ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ| 6/6 [00:00<00:00, 167.70 functions/s]
INFO: floss.tightstrings: extracting tightstrings from 0 functions...
extracting tightstrings: 0 functions [00:00, ? functions/s]
INFO: floss.string_decoder: decoding strings
emulating function 0x4012c1 (call 1/1): 100%|ββββββββββββββββββββββββββββββββββββββββββββββββ| 6/6 [00:00<00:00, 58.90 functions/s]
INFO: floss: finished execution after 4.92 seconds
INFO: floss: rendering results
FLARE FLOSS RESULTS (version v3.1.1-0-g3cd3ee6)
+------------------------+------------------------------------------------------------------------------------+
| file path | Lab01-02.exe.unpacked |
| identified language | unknown |
| extracted strings | |
| static strings | 58 (625 characters) |
| language strings | 0 ( 0 characters) |
| stack strings | 0 |
| tight strings | 0 |
| decoded strings | 0 |
+------------------------+------------------------------------------------------------------------------------+
βββββββββββββββββββββββββββ
FLOSS STATIC STRINGS (58)
βββββββββββββββββββββββββββ
+----------------------------------+
| FLOSS STATIC STRINGS: ASCII (55) |
+----------------------------------+
!This program cannot be run in DOS mode.
Rich
.text
`.rdata
@.data
.
.
.
KERNEL32.DLL
ADVAPI32.dll
MSVCRT.dll
WININET.dll
SystemTimeToFileTime
GetModuleFileNameA
CreateWaitableTimerA
ExitProcess
OpenMutexA
SetWaitableTimer
WaitForSingleObject
CreateMutexA
CreateThread
CreateServiceA
StartServiceCtrlDispatcherA
OpenSCManagerA
.
.
.
InternetOpenUrlA
InternetOpenA
MalService
Malservice
HGL345
http://www.malwareanalysisbook.com
Internet Explorer 8.0
+------------------------------------+
| FLOSS STATIC STRINGS: UTF-16LE (3) |
+------------------------------------+
@jjjj
@jjj
@jjj
βββββββββββββββββββββββββ
FLOSS STACK STRINGS (0)
βββββββββββββββββββββββββ
βββββββββββββββββββββββββ
FLOSS TIGHT STRINGS (0)
βββββββββββββββββββββββββ
βββββββββββββββββββββββββββ
FLOSS DECODED STRINGS (0)
βββββββββββββββββββββββββββ
Lab 1-3
1. Upload the Lab01-03.exe file to http://www.VirusTotal.com/. Does it match any existing antivirus definitions?
- Lab01-03.exe
- Code insights
- The sample demonstrates behavior typical of adware or a
Trojan-Clicker. - It initializes
OLE/COMand usesCoCreateInstanceto instantiate a web browser object (likelyIWebBrowser2). - It then invokes the Navigate method (offset
0x2c) to automatically redirect the user to a hardcoded URL: http://www.malwareanalysisbook.com/ad.html. - This action is performed without user interaction immediately upon execution.
- The sample demonstrates behavior typical of adware or a

2. Are there any indications that this file is packed or obfuscated? If so, what are these indicators? If the file is packed, unpack it if possible.
- Here is the output of Detect-it-Easy, and entropy show nothing,
- Here is the Breakdown:
- OS & Architecture: Windows 95/32-bit : just an identification hint, likely the minimum required OS.
- Language:
ASMx86- compiled from low-level assembly (common in small labs or malware). - Protection:
Generic[Strange sections + Custom DOS]- unusual PE structure, maybe packed or manually crafted.
- Packer:
Compressed or packed data[Section names repeating]- file is likely packed or obfuscated (maybe UPX or custom packer).
- Here is the Breakdown:
)
- So i used another tool
pe-detectiveand it shows that itFSG v1.00 (Eng) β dulek/xt, - The binary is packed with FSG (Fast Small Good) v1.00, a PE executable packer, written by dulek from the xt (Xtream / Xtreme) group.

3. Do any imports hint at this programβs functionality? If so, which imports are they and what do they tell you?
- I used
pestudioto see imports, it has only 2.

4. What host- or network-based indicators could be used to identify this malware on infected machines?
- It is a future topic that will be covered so for now we pause here.
Lab 1-4
1. Upload the Lab01-04.exe file to http://www.VirusTotal.com/. Does it match any existing antivirus definitions?
- Lab-01-04.exe
- Code Insights
- This binary is a downloader.
- It uses theΒ
URLDownloadToFileAΒ function to download an executable fromΒhttp://www.practicalmalwareanalysis.com/updater.exe. - The downloaded file is saved to the system directory asΒ
C:\Windows\system32\wupdmgrd.exeΒ and then executed viaΒWinExec. - This behavior of downloading and executing a remote payload is unequivocally malicious.
- Code Insights

2. Are there any indications that this file is packed or obfuscated? If so, what are these indicators? If the file is packed, unpack it if possible.
- This time i used
diecwhich is CLI version of Detect-it-Easy,- Which shows that it is build using
cppin visual studio. - And entropy says that it is not packed indeed.
- Which shows that it is build using
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~/]
ββ$ diec -u --verbose Lab01-04.exe
[HEUR/About] Generic Heuristic Analysis by DosX (@DosX_dev)
[HEUR] Scanning has begun!
[HEUR] Scanning to programming language has started!
[HEUR/Any] C library present -> "msvcrt.dll"
[HEUR] Scan completed.
PE32
Operation system: Windows(95)[I386, 32-bit, GUI]
Linker: Microsoft Linker(6.00.8168)
Compiler: Microsoft Visual C/C++(12.00.8168)[C++/std]
Language: C++
Tool: Visual Studio(6.0)
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~/]
ββ$ diec Lab01-04.exe -e
Total 1.17687: not packed
0|PE Header|0|4096|0.671276: not packed
1|Section(0)['.text']|4096|4096|3.12359: not packed
2|Section(1)['.rdata']|8192|4096|1.59136: not packed
3|Section(2)['.data']|12288|4096|0.50793: not packed
4|Section(3)['.rsrc']|16384|20480|0.712982: not packed
3. When was this program compiled?
- For this task i can use
readpewhich is cli alternative ofpestudio,- Fri, 30 Aug 2019 22:26:59 UTC
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~/]
ββ$ readpe -H Lab01-04.exe | grep time
Date/time stamp: 1567204019 (Fri, 30 Aug 2019 22:26:59 UTC)
4. Do any imports hint at this programβs functionality? If so, which imports are they and what do they tell you?
- There is another tool
pecliused for which can be used to get PE info like imports etc.
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~/]
ββ$ pecli info Lab01-04.exe
Metadata
================================================================================
...
Sections
================================================================================
...
Imports
================================================================================
KERNEL32.dll
0x402010 GetProcAddress
0x402014 LoadLibraryA
0x402018 WinExec
0x40201c WriteFile
0x402020 CreateFileA
0x402024 SizeofResource
0x402028 CreateRemoteThread
0x40202c FindResourceA
0x402030 GetModuleHandleA
0x402034 GetWindowsDirectoryA
0x402038 MoveFileA
0x40203c GetTempPathA
0x402040 GetCurrentProcess
0x402044 OpenProcess
0x402048 CloseHandle
0x40204c LoadResource
ADVAPI32.dll
0x402000 OpenProcessToken
0x402004 LookupPrivilegeValueA
0x402008 AdjustTokenPrivileges
MSVCRT.dll
0x402054 _snprintf
0x402058 _exit
0x40205c _XcptFilter
0x402060 exit
0x402064 __p___initenv
0x402068 __getmainargs
0x40206c _initterm
0x402070 __setusermatherr
0x402074 _adjust_fdiv
0x402078 __p__commode
0x40207c __p__fmode
0x402080 __set_app_type
0x402084 _except_handler3
0x402088 _controlfp
0x40208c _stricmp
Resources:
================================================================================
...
- This is
pestudiooutput because it gives sus potential malicious imports as red flags,

- Potential Program Flow,
- This executable extracts an embedded payload, writes it to disk, elevates privileges, and executes or injects the payload into another process, indicating a dropper with privilege escalation and injection capabilities.
Start
βββΊ LoadLibraryA()
βββΊ GetProcAddress()
βββΊ Dynamically resolve APIs (evasion || flexibility)
βββΊ FindResourceA()
βββΊ SizeofResource()
βββΊ LoadResource()
βββΊ Extract embedded payload from resources
βββΊ GetTempPathA()
βββΊ CreateFileA(temp_file)
βββΊ WriteFile()
βββΊ Drop extracted payload to disk
βββΊ GetWindowsDirectoryA()
βββΊ MoveFileA()
βββΊ Relocate payload to Windows directory
βββΊ OpenProcessToken(GetCurrentProcess())
βββΊ LookupPrivilegeValueA()
βββΊ AdjustTokenPrivileges()
βββΊ Enable elevated privileges
βββΊ GetCurrentProcess()
βββΊ OpenProcess()
βββΊ CreateRemoteThread()
βββΊ Inject payload into target process
βββΊ WinExec()
βββΊ Execute dropped payload
βββΊ CloseHandle()
βββΊ ExitProcess()
End
5. What host or network-based indicators could be used to identify this malware on infected machines?
- I used
flossfor strings analysis, - This is the C2 domain which is downloading stage2,
hxxp[:]//www[.]practicalmalwareanalysis[.]com/updater[.]exeand it is being put into\system32\wupdmgrd.exewith this name and being executed usingWinExec.
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~/]
ββ$ /opt/floss Lab01-04.exe
INFO: floss: extracting static strings
finding decoding function features: 100%|ββββββββββββββ| 13/13 [00:00<00:00, 2269.17 functions/s, skipped 1 library functions (7%)]
INFO: floss.stackstrings: extracting stackstrings from 8 functions
extracting stackstrings: 100%|ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ| 8/8 [00:00<00:00, 105.67 functions/s]
INFO: floss.tightstrings: extracting tightstrings from 0 functions...
extracting tightstrings: 0 functions [00:00, ? functions/s]
INFO: floss.string_decoder: decoding strings
emulating function 0x401701 (call 1/1): 100%|ββββββββββββββββββββββββββββββββββββββββββββββββ| 8/8 [00:00<00:00, 46.70 functions/s]
INFO: floss: finished execution after 4.77 seconds
INFO: floss: rendering results
FLARE FLOSS RESULTS (version v3.1.1-0-g3cd3ee6)
+------------------------+------------------------------------------------------------------------------------+
| file path | Lab01-04.exe |
| identified language | unknown |
| extracted strings | |
| static strings | 114 (1210 characters) |
| language strings | 0 ( 0 characters) |
| stack strings | 0 |
| tight strings | 0 |
| decoded strings | 0 |
+------------------------+------------------------------------------------------------------------------------+
ββββββββββββββββββββββββββββ
FLOSS STATIC STRINGS (114)
ββββββββββββββββββββββββββββ
+-----------------------------------+
| FLOSS STATIC STRINGS: ASCII (114) |
+-----------------------------------+
!This program cannot be run in DOS mode.
Rich
.
.
.
CloseHandle
OpenProcess
GetCurrentProcess
CreateRemoteThread
GetProcAddress
LoadLibraryA
WinExec
WriteFile
CreateFileA
SizeofResource
LoadResource
FindResourceA
GetModuleHandleA
GetWindowsDirectoryA
MoveFileA
GetTempPathA
KERNEL32.dll
AdjustTokenPrivileges
LookupPrivilegeValueA
OpenProcessToken
ADVAPI32.dll
_snprintf
.
.
.
%s%s
\winup.exe
%s%s
!This program cannot be run in DOS mode.
Rich
.text
.
.
.
GetWindowsDirectoryA
WinExec
GetTempPathA
KERNEL32.dll
URLDownloadToFileA
urlmon.dll
.
.
.
\winup.exe
%s%s
\system32\wupdmgrd.exe
%s%s
http://www.practicalmalwareanalysis.com/updater.exe
+------------------------------------+
| FLOSS STATIC STRINGS: UTF-16LE (0) |
+------------------------------------+
βββββββββββββββββββββββββ
FLOSS STACK STRINGS (0)
βββββββββββββββββββββββββ
βββββββββββββββββββββββββ
FLOSS TIGHT STRINGS (0)
βββββββββββββββββββββββββ
βββββββββββββββββββββββββββ
FLOSS DECODED STRINGS (0)
βββββββββββββββββββββββββββ
6. This file has one resource in the resource section. Use Resource Hacker to examine that resource, and then use it to extract the resource. What can you learn from the resource?
- In
PEstudio, if we inspect resource of this file we can see that it has another exe embedded so we can carve it. - By saving this as a binary (executable) file, we can then run using
pecliand see this is the file which not only contains thewinexecimported function ofkernel32.dll, but also theURLDownloadToFilefunction ofURLMON.DLLwhich indicates it will likely download and execute a file.
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~/~]
ββ$ file Lab01-04_res.exe
Lab01-04_res.exe: PE32 executable for MS Windows 4.00 (GUI), Intel i386, 3 sections
βββ(b14ckyγΏDESKTOP-VRSQRAJ)-[~/]
ββ$ pecli info Lab01-04_res.exe
Imports
================================================================================
...
urlmon.dll
0x40204c URLDownloadToFileA
...

PMA - Lab Write-up 2026
https://b14cky.github.io/posts/practical-malware-analysis-labs/notes/
