---
# System prepended metadata

title: LAB 15-03 ANTI – DISASSEMBLY

---

# LAB 15-03 ANTI – DISASSEMBLY

* Công cụ dùng để dịch ngược: IDA

## 1. How is the malicious code initially called? (mã độc ban đầu được gọi như nào)

* Hàm ban đầu thực hiện khởi tạo stack frame mới. 
* `push ebp`: lưu lại `ebp` của hàm gọi
* `mov ebp, esp`: gán giá trị `ebp` mới bằng `esp`
* `sub esp, 134h`: tạo vùng cho các biến cục bộ
* Các lệnh `push` sau đó là đẩy các tham số lên stack
* Sau đó là thay đổi giá trị trả về của hàm gọi thành `40148Ch`

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

## 2. What does the malicious code do? (mã độc này làm gì)

* Do đã ghi đè địa chỉ trả về nên khi thực thi xong hàm main thì chương trình sẽ nhảy đến `40148Ch`

![image](https://hackmd.io/_uploads/rJDyDZliel.png)
* Ở đây ở địa chỉ `0x401494` ta thấy kỹ thuật anti-disassembly với lệnh `jz` mà trước đó có lệnh `xor eax, eax` tức là chương trình sẽ luôn nhảy đến địa chỉ `0x401497`
* Sau khi sửa lại 

![image](https://hackmd.io/_uploads/BkRc_Zeieg.png)
* Ở đây ta thấy chương trình thực hiện thêm 1 bản ghi SEH trên stack với handler là `0x4014C0`
* Ngay sau đó là 2 lệnh
* `xor ecx, ecx`: ecx có giá trị bằng `0`
* `div ecx`: thực hiện phép chia cho `ecx` mà `ecx` có giá trị là `0` vẫn chương trình sẽ trigger 1 exception và sẽ gọi tới handler chương trình vừa mới đăng kí đó là `0x4014C0`

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

* Tiếp tục là 1 kỹ thuật anti-disassembly với lệnh `jmp` sau khi thực hiện unlink `SEH` handler và khôi phục lại handler ban đầu
* Thực hiện disassemble ở địa chỉ `0x4014D8`

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

* Lệnh `call    $+5` thực hiện push địa chỉ của câu lệnh tiếp theo lên stack tức `0x4014E0`
* Tiếp theo thực hiện push giá trị `0x403010` lên stack và gọi hàm `0x401534`

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

* Hàm này thực hiện cộng giá trị ở `[ebp+arg_0]`, thực hiện xor với `0xff` đến ghi giá trọ đó là 1 con trỏ trỏ đến `0`
* Chương trình sau đó gọi hàm `URLDownloadToFileA` để tải 1 file trên mạng về, tiếp tục là 1 kĩ thuật anti-disassembly khi thực hiện 2 lệnh `jz` và `jnz`
![image](https://hackmd.io/_uploads/Sk3GpZgsll.png)
* Disassemble ở địa chỉ `0x40151a` ta thấy chương trình thực hiện `WinExec` rồi thoát chương trình
![image](https://hackmd.io/_uploads/BkDUabgjel.png)

## 3, 4. What URL does the malware use and what filename does the malware use??(URL và tên file mã độc sử dụng là gì)

* Hàm `URLDownloadToFileA` lấy tham số từ địa chỉ ` unk_403040` và `unk_403010`

```
unk_403010      db  97h                 ; DATA XREF: .text:004014E6↑o
.data:00403010                                         ; .text:00401509↑o
.data:00403011                 db  8Bh
.data:00403012                 db  8Bh
.data:00403013                 db  8Fh
.data:00403014                 db 0C5h
.data:00403015                 db 0D0h
.data:00403016                 db 0D0h
.data:00403017                 db  88h
.data:00403018                 db  88h
.data:00403019                 db  88h
.data:0040301A                 db 0D1h
.data:0040301B                 db  8Fh
.data:0040301C                 db  8Dh
.data:0040301D                 db  9Eh
.data:0040301E                 db  9Ch
.data:0040301F                 db  8Bh
.data:00403020                 db  96h
.data:00403021                 db  9Ch
.data:00403022                 db  9Eh
.data:00403023                 db  93h
.data:00403024                 db  92h
.data:00403025                 db  9Eh
.data:00403026                 db  93h
.data:00403027                 db  88h
.data:00403028                 db  9Eh
.data:00403029                 db  8Dh
.data:0040302A                 db  9Ah
.data:0040302B                 db  9Eh
.data:0040302C                 db  91h
.data:0040302D                 db  9Eh
.data:0040302E                 db  93h
.data:0040302F                 db  86h
.data:00403030                 db  8Ch
.data:00403031                 db  96h
.data:00403032                 db  8Ch
.data:00403033                 db 0D1h
.data:00403034                 db  9Ch
.data:00403035                 db  90h
.data:00403036                 db  92h
.data:00403037                 db 0D0h
.data:00403038                 db  8Bh
.data:00403039                 db  8Bh
.data:0040303A                 db 0D1h
.data:0040303B                 db  97h
.data:0040303C                 db  8Bh
.data:0040303D                 db  92h
.data:0040303E                 db  93h
.data:0040303F                 db 0FFh
```
```
.data:00403040 unk_403040      db    0                 ; DATA XREF: .text:004014F3↑o
.data:00403040                                         ; .text:00401504↑o
.data:00403041                 db  8Ch
.data:00403042                 db  8Fh
.data:00403043                 db  90h
.data:00403044                 db  90h
.data:00403045                 db  93h
.data:00403046                 db  8Ch
.data:00403047                 db  8Dh
.data:00403048                 db  89h
.data:00403049                 db 0D1h
.data:0040304A                 db  9Ah
.data:0040304B                 db  87h
.data:0040304C                 db  9Ah
.data:0040304D                 db 0FFh
```

![image](https://hackmd.io/_uploads/B1wDCbejee.png)
* Do cả 2 địa chỉ trước đó được gọi với hàm `401534` để xor với giá trị `0xff`. Thực hiện decode 2 địa chỉ này ta được
* URL: http://www.practicalmalwareanalysis.com/tt.html
* Filename: spoolsrv.exe


