← Reports

Ransomware · Ransomworm · Worm

WannaCry - invoice_greenanimals.pdf.exe

Author
Moise Medici
Updated
15 Feb 2026 · Completed
Difficulty
Medium
Platform
Windows
Family
WannaCryptor
Languages
C++
MITRE
T1047 (Windows Management Instrumentation) T1059.003 (Command and Scripting Interpreter: Windows Command Shell) T1059.005 (Command and Scripting Interpreter: Visual Basic) T1569.002 (System Services: Service Execution) T1543.003 (Create or Modify System Process: Windows Service) T1547.001 (Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder) T1027.007 (Obfuscated Files or Information: Dynamic API Resolution) T1027.009 (Obfuscated Files or Information: Embedded Payloads) T1027.013 (Obfuscated Files or Information: Encrypted/Encoded File) T1036.004 (Masquerading: Masquerade Task or Service) T1036.005 (Masquerading: Match Legitimate Resource Name or Location) T1036.007 (Masquerading: Double File Extension) T1070.004 (Indicator Removal: File Deletion) T1140 (Deobfuscate/Decode Files or Information) T1480 (Execution Guardrails) T1564.001 (Hide Artifacts: Hidden Files and Directories) T1620 (Reflective Code Loading) T1222.001 (File and Directory Permissions Modification: Windows Permissions) T1016 (System Network Configuration Discovery) T1033 (System Owner/User Discovery) T1046 (Network Service Discovery) T1083 (File and Directory Discovery) T1680 (Local Storage Discovery) T1210 (Exploitation of Remote Services) T1570 (Lateral Tool Transfer) T1486 (Data Encrypted for Impact) T1490 (Inhibit System Recovery) T1491.001 (Defacement: Internal Defacement)

Full Import Address Table

FunctionDLLAttack UsageDescriptionDocs
CryptAcquireContextAADVAPI32.dllRansomwareCryptAcquireContextA is used to acquire a handle to a particular key container within a particular cryptographic service provider (CSP)https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptacquirecontexta
ioctlsocketWS2_32.dllInternetioctlsocket takes control of the I/O mode of a socket in any statehttps://docs.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-ioctlsocket
InternetOpenAWININET.dllInternetInternetOpenA is used to initialize the use of WinINet functions.https://docs.microsoft.com/en-us/windows/win32/api/wininet/nf-wininet-internetopenurla
InternetOpenUrlAWININET.dllInternetInternetOpenUrlA is used to open a resource specified by a complete FTP or HTTP URL.https://docs.microsoft.com/en-us/windows/win32/api/wininet/nf-wininet-internetopenurla
InternetCloseHandleWININET.dllInternetInternetCloseHandle is used to close an internet handle.https://docs.microsoft.com/en-us/windows/win32/api/wininet/nf-wininet-internetclosehandle
WaitForSingleObjectKERNEL32.dllInjectionEvasionWaitForSingleObject is used to delay the execution of an object. This function is commonly used to allow time for shellcode being executed within a thread to run. It is also used for time-based evasion.https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-waitforsingleobject
GetProcAddressKERNEL32.dllInjectionEvasionGetProcAddress is used to get the memory address of a function in a DLL. This is often used by malware for obfuscation and evasion purposes to avoid having to call the function directly.https://docs.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-getprocaddress
GetModuleHandleAKERNEL32.dllInjectionEvasionGetModuleHandleW is used to retrieve a module handle for the specified module. The module must have been loaded by the calling process. This function is often used along with GetProcAddress to dynamically retrieve the address of a function for evasion purposes.https://docs.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulehandlea
LocalAllocKERNEL32.dllInjectionLocalAlloc is used for heap allocation and manipulation.https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-localalloc
GlobalAllocKERNEL32.dllInjectionGlobalAlloc is used to allocate the specified number of bytes from the heap.https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-globalalloc
CreateFileAKERNEL32.dllHelperCreateFileA is used to create a new file or opens an existing file.https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea
MoveFileExAKERNEL32.dllHelperMoveFileExA is used to move an existing file or a directory, including its children.https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-movefileexa
TerminateThreadKERNEL32.dllHelperTerminateThread is used to terminate a thread.https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-terminatethread
FindResourceAKERNEL32.dllHelperFindResourceA is used to find a resource in an executable or loaded DLL. Malware sometimes uses resources to store strings, configuration information, or other malicious files. If you see this function used, check for a .rsrc section in the malware’s PE header.https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-findresourcea
GetModuleFileNameAKERNEL32.dllHelperGetModuleFileNameA is used to return the filename of a module that is loaded in the current process. Malware can use this function to modify or copy files in the currently running process.https://docs.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulefilenamea
StartServiceCtrlDispatcherAADVAPI32.dllHelperStartServiceCtrlDispatcherA is used by a service to connect the main thread of the process to the service control manager.https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-startservicectrldispatchera
OpenSCManagerAADVAPI32.dllHelperOpenSCManagerA is used to open a handle to the service control manager. This function is commonly used when a malware intends to interact with a service.https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-openscmanagera
CreateServiceAADVAPI32.dllHelperCreateServiceA is used to create a service object and adds it to the specified service control manager database. This function is commonly used by malware for persistence.https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-createservicea
StartServiceAADVAPI32.dllHelperStartServiceA is used to start a service.https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-startservicea
OpenServiceAADVAPI32.dllHelperOpenServiceA is used to open an existing service.https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-openservicea
LockResourceKERNEL32.dllEvasionHelperLockResource is used with FindResource(), LoadResource() and SizeOfResource() usually to work with embedded executables into the .rsrc section (droppers)https://docs.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-lockresource
SleepKERNEL32.dllEvasionAnti-DebuggingSleep is used to suspend the execution of the current thread for a set time. This function is commonly used for time-based evasion by adding delays in the code.https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-sleep
LoadResourceKERNEL32.dllEvasionLoadResource is used to load a resource from a PE file into memory. Malware sometimes uses resources to store strings, configuration information, or other malicious files.https://docs.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-loadresource
GetCurrentThreadIdKERNEL32.dllEnumerationGetCurrentThreadId is used to retrieve the thread identifier of the calling thread.https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getcurrentthreadid
GetCurrentThreadKERNEL32.dllEnumerationGetCurrentThread is used to retrieve a handle for the calling thread.https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getcurrentthread
GetAdaptersInfoiphlpapi.dllEnumerationGetAdaptersInfo is used to obtain information about the network adapters on the system. This function is commonly used by malware for enumeration purposes.https://docs.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-getadaptersinfo
QueryPerformanceFrequencyKERNEL32.dllAnti-DebuggingQueryPerformanceFrequency is used to retrieve the frequency of the performance counter. This function is commonly used by malware for anti-debugging purposes. The malware will measure the time before and after an operation, if the time exceeds taken expected time, the malware will terminate or activate a benign function.https://docs.microsoft.com/en-us/windows/win32/api/profileapi/nf-profileapi-queryperformancefrequency
QueryPerformanceCounterKERNEL32.dllAnti-DebuggingQueryPerformanceCounter is used to retrieve the frequency of the performance counter. This function is commonly used by malware for anti-debugging purposes. The malware will measure the time before and after an operation, if the time exceeds taken expected time, the malware will terminate or activate a benign function.https://docs.microsoft.com/en-us/windows/win32/api/profileapi/nf-profileapi-queryperformancecounter
GetTickCountKERNEL32.dllAnti-DebuggingGetTickCount is used to retrieve the number of milliseconds since bootup. This function is used by malware for anti-debugging purposes.https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-gettickcount
InterlockedIncrementKERNEL32.dll
ReadFileKERNEL32.dll
GetFileSizeKERNEL32.dll
SizeofResourceKERNEL32.dll
GetModuleHandleWKERNEL32.dll
ExitProcessKERNEL32.dll
LocalFreeKERNEL32.dll
CloseHandleKERNEL32.dll
InterlockedDecrementKERNEL32.dll
EnterCriticalSectionKERNEL32.dll
LeaveCriticalSectionKERNEL32.dll
InitializeCriticalSectionKERNEL32.dll
GlobalFreeKERNEL32.dll
GetStartupInfoAKERNEL32.dll
RegisterServiceCtrlHandlerAADVAPI32.dll
ChangeServiceConfig2AADVAPI32.dll
SetServiceStatusADVAPI32.dll
CloseServiceHandleADVAPI32.dll
CryptGenRandomADVAPI32.dll
closesocketWS2_32.dll
recvWS2_32.dll
sendWS2_32.dll
htonlWS2_32.dll
ntohlWS2_32.dll
WSAStartupWS2_32.dll
inet_ntoaWS2_32.dll
selectWS2_32.dll
htonsWS2_32.dll
socketWS2_32.dll
connectWS2_32.dll
inet_addrWS2_32.dll
??1_Lockit@std@@QAE@XZMSVCP60.dll
??0_Lockit@std@@QAE@XZMSVCP60.dll
GetPerAdapterInfoiphlpapi.dll