Practical 1
Practical 1
Malware Samples
Download the malware from:
https://github.com/mikesiko/PracticalMalwareAnalysis-Labs
VirusTotal
In a Web browser, go to
https://www.virustotal.com
VirusTotal compares a file to a database of antivirus engines. You can upload files, but that may alert
attackers that you have detected an intrusion. Using it to search for a hash value of a sample is safer.
Using PEview
PEview shows the sections that make up a PE (Portable Executable) file.
Goto http://wjradburn.com/software/.
Download PEview version 0.9.9 and unzip it. Double click PEview.exe
On the left side, expand the IMAGE_NT_HEADERS container and click IMAGE_FILE_HEADER.
The "Time Date Stamp" shows when the files were compiled. This is often used as an indication of the
time zone the attackers live in. Files that were compiled at the same time are also often regarded as part
of the same package.
Find the Data that is covered by a green box in the image below.
Using PEiD
PEiD shows what language the sample was written in, or what packer was used if it's packed.
In PEid, in the "File" line, at the right side, click the ... button.
On the bottom left, you can see that this file was written in "Microsoft Visual C++", as shown below.
Using BinText
BinText is a handy tool to view strings, a very easy and powerful way to analyze a file.
http://b2b-download.mcafee.com/products/tools/foundstone/bintext303.zip
Extract and open BinText and click Run at the Security prompt.
Goto the Chapter_1L folder, select the Lab01-01.exe file and click Go.
Notice FindNextFileA and FindFirstFileA, as shown below. These are Windows API functions used to
search through a directory.
Analyzing Lab01-01.dll
In BinText, open the Lab01-01.dll file and click Go.
The command to launch a program is missing. To see it, click the Filter tab and adjust the "Min. text
length" to 4 as shown below.
Now you can see that the command to launch a program is exec, appearing just above "sleep" in the
image below.
Near the bottom, find the IP address beginning with 127, covered by a green box in the image
below.
Dependency Walker
Go to http://www.dependencywalker.com/ and click Download Version 2.2.6000 for x64 [468k]
In Dependency Walker, click the opening folder icon and open the Lab01-01.exe file.
An error message will popup, but you can ignore it and click ok. Learn more about it
at https://stackoverflow.com/questions/33604738/dependency-walker-with-windows-10
The top left pane is called the "Module Dependency Tree View".
It shows the EXE file and the two Windows libraries it uses: MSVCRT.DLL and KERNEL32.DLL, as shown
below (click the - next to KERNEL32.DLL).
In the top left pane, click MSVCRT.DLL. The top right pane shows "Parent Imports". These are the
functions the EXE file uses from the library.
As shown below, this executable uses only a small number of library functions, and none of them indicate
much about its purpose. One of them is named _stricmp, which indicates that this program performs a
string comparison, but that's a very common operation.
The top right pane shows that this file uses several functions that manipulate files,
including FindNextFileA and FindFirstFileA, as shown below.
This suggests that the malware searches through the file system.
Analyzing Lab01-01.dll
In the top left pane, partially collapse the tree to match the image below and click WS2_32.DLL.
The top right pane doesn't show function names this time, it only shows "Ordinal" numbers. This is
called Linking by Ordinal, and it's an annoyance to us because we can't easily see what functions are in
use.
The center-right pane shows the Exports of WS2_32.DLL, which include accept, bind, and connect.
These are the standard Berkeley Sockets functions used for networking. This suggest that the malware
performs some networking functions, such as connecting to a server and opening a listening port.
In the top left pane, click KERNEL32.DLL. The top right pane shows the five "Parent Imports", which
include CreateProcessA and Sleep, as shown below.
Find the function name that is covered by a green box in the image below.