> For the complete documentation index, see [llms.txt](https://twentysick.gitbook.io/twentysick/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://twentysick.gitbook.io/twentysick/writeup/flare-on/flare-on-2025/4-unholydragon.md).

# 4 - UnholyDragon

### Description

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2F3eaaIaOBPGS5Djp8gV4c%2F4.png?alt=media&amp;token=b3f024e3-d146-4f32-9a3d-48a08e00e8bd" alt=""><figcaption></figcaption></figure>

### Solution

Sau khi extract, mình có thấy 1 file là `UnholyDragon-150.exe`

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FuvPO1xUe8TO0P3aiHpSn%2Fimage.png?alt=media&amp;token=48d18ec3-7759-4b3a-b765-3b49ec315bfa" alt=""><figcaption></figcaption></figure>

Mình đã sử dụng *CFF Explorer* để xem file nhưng không nhận dạng được

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FUqWGcGlcr1YqFDlpISSf%2Fimage.png?alt=media&amp;token=011e12bc-5028-4923-9966-620bbc828e69" alt=""><figcaption></figcaption></figure>

Nên mình đã xài *HxD* để xem tại sao lại không nhận dạng được thì nó bị sai ngay byte đầu tiên của file

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FYix1RZWeYTgDxaHEK914%2Fimage.png?alt=media&amp;token=1bef8355-5a48-4256-ada3-a5de0d3b41cf" alt=""><figcaption></figcaption></figure>

Mình sửa lại cho đúng \[ 15 5A -> 4D 5A ] và load lại vào CFF Explorer 1 lần nữa

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FjQ61BKxe5DwTlNUWe2R3%2Fimage.png?alt=media&amp;token=da53fec3-aab2-49c3-af01-b0fb4d4164d7" alt=""><figcaption></figcaption></figure>

Dia, nó đã đọc được 1 cách sạch đẹp rồi, đây cũng không phải file được code bằng C# nên mình sử dụng IDA để decompile nó

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2F2PGMkyhXUP7p22RAc4Qu%2Fimage.png?alt=media&amp;token=59d222ec-547b-4e2f-a1e3-651fd2ec95e0" alt=""><figcaption></figcaption></figure>

(Ngoài lề) Sau một hồi ngồi tìm tòi trên mạng, dựa vào resource của file này, mình nhận ra đây là 1 file được viết compile từ [twinBASIC](https://twinbasic.com/)

Nhìn khá khùm khoằm nên mình quyết định debug nó để xem nó thực sự sẽ làm gì thì... cuộc vui sẽ bắt đầu tại&#x20;

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FnLeuxdo9U9BYzpevkA4f%2Fimage.png?alt=media&amp;token=115ca90e-b83c-4f90-aeb7-aea1927c756a" alt=""><figcaption></figcaption></figure>

Thật ra là ngay khi nó gọi hàm này ở bên trong hàm bên trên

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FYoCK29fwTc3tIF8IQTHy%2Fimage.png?alt=media&amp;token=ea134192-8555-49c3-a2b5-495a3b93fb6b" alt=""><figcaption></figcaption></figure>

Ở đây, *a1* chính là *sub\_4A9C4E*

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2F1bRMLTa5YlA36RqyBFgS%2Fimage.png?alt=media&amp;token=86743ade-7a9a-40ed-902c-8d38c8ab8f1b" alt=""><figcaption></figcaption></figure>

Ok, hãy chú ý hơn vào cái hàm này

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2F8RNstFYj42iM6YmUxxXw%2Fimage.png?alt=media&amp;token=45b42d8e-2eac-49bd-acb2-a7821780cd36" alt=""><figcaption></figcaption></figure>

Và, hàm này sẽ thực hiện:

* Kiểm tra tên file, nếu đúng là `UnholyDragon-xxx.exe` thì sẽ thực hiện lấy giá trị xxx tại hàm *sub\_4A4C41* (Còn không thì tạo cái mới và cái giá trị xxx sẽ bắt đầu từ 1 chứ sao nựa)

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FBijr7LRE0Itdv6obz4JR%2Fimage.png?alt=media&amp;token=9d880ce7-c9e9-4936-bb1e-61461d9568d1" alt=""><figcaption></figcaption></figure>

* Sau khi lấy giá trị đó ra, xử lý và tạo tên mới

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FsKlwvj0QXTx8BZQZ5NCv%2Fimage.png?alt=media&amp;token=182d30bd-709f-4a49-9858-4b2d30267364" alt=""><figcaption></figcaption></figure>

Nhìn vậy, cũng có thể dễ thấy là phần mềm sẽ lấy XXX, sau đó +1 rồi lại tạo thành 1 cái tên mới... và sau đó tạo thành 1 cái tên hoàn chỉnh với đường dẫn đầy đủ

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FQB3IDmc6JZsz0Thaol2l%2Fimage.png?alt=media&amp;token=92bdb42d-2e19-48c2-b831-761d1fdcc02c" alt=""><figcaption></figcaption></figure>

Tới đây, mình đã phán đoán rằng nó sẽ tạo 1 file mới với tên vừa tạo. Để xem có đúng không thì mình tiếp tục debug và...

Tại hàm *sub\_4A54BE*, có thể thấy phần mềm sẽ Copy chính nó với tên file mới là tên vừa tạo

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2Foorhlfr1JOwD70thymPS%2Fimage.png?alt=media&amp;token=cc11cfcf-e958-4fa8-92c9-7807e596b08f" alt=""><figcaption></figcaption></figure>

Còn đây là chính là hàm đó nhưng xem bằng IDA

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2Fa9Klw8YjB8FXmclvXoIs%2Fimage.png?alt=media&amp;token=aaa77d44-5734-4f04-96a2-f5609d03876f" alt=""><figcaption></figcaption></figure>

Sau khi Copy xong, hàm này thực hiện việc chỉnh sửa file vừa copy

* Đầu tiên, sẽ thực hiện đọc file

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FQFNI4EZkUj9Sr4llDUXS%2Fimage.png?alt=media&amp;token=23339159-1e40-408e-b3c5-efb5498c0870" alt=""><figcaption></figcaption></figure>

* Tiếp đó, thực hiện chỉnh sửa rồi viết lại vào chính file vừa được đọc

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2Fm0ZYmDR14FfhWQaa3kJI%2Fimage.png?alt=media&amp;token=ca7c1011-1df6-4026-bede-2cb05c8b9089" alt=""><figcaption></figcaption></figure>

* Cuối cùng là thực thi file vừa được tạo

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FD5Hgjl9flFTTtgbq40rm%2Fimage.png?alt=media&amp;token=8ea91f50-6466-4ba4-b0ed-dc746a488808" alt=""><figcaption></figcaption></figure>

Từ những phân tích trên, thì mình thắc mắc "*Ơ nếu mình ko chạy từ 150 mà đổi luôn tên file rồi chạy thì sẽ thế nào?*"

Nghĩ là làm, và mình thực sự đã đổi tên file và thực thi và... (xin chân thành cảm ơn người anh trai đã gợi ý cho em ý tưởng này UwU)

Ối rồi ôi, nhìn nó tạo kìa 🙂

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FsJ1Eu6c1ZaMVLeMRtSGq%2Fimage.png?alt=media&amp;token=ce1721a7-7e6e-4d8b-a1a4-03da27059788" alt=""><figcaption></figcaption></figure>

Ok, mình lại thấy 1 file `UnholyDragon-150.exe` y hệt như lúc mình mới extract ra. Thế thì load vào *CFF Explorer* xem nó là gì thôi

Vâng, lại không nhận dạng được

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2Fj0HOFr5snV8B4dGwrGt4%2Fimage.png?alt=media&amp;token=8e7d7556-85f6-46c0-a4a8-20f0c3b660db" alt=""><figcaption></figcaption></figure>

Load vào trong *HxD* thì nó tương tự như với file đầu tiên

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FeK48mF9vSqiQyr8kxGK2%2Fimage.png?alt=media&amp;token=7d0a9ea9-9639-4964-bd6d-bbacf0bd9aad" alt=""><figcaption></figcaption></figure>

Tiến hành sửa file như với file đầu tiên \[ 15 5A -> 4D 5A ] và chạy tiếp thì mình đã có flag 😎 (Nó vẫn tiếp tuc sinh thêm file đấy...)

<figure><img src="https://3579869334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqj23826F0xExp2MNexN5%2Fuploads%2FiQLuUB482qEEuiyzNswh%2Fimage.png?alt=media&amp;token=b98b37ed-4d29-4a05-bcde-3ac84283187f" alt=""><figcaption></figcaption></figure>

***Flag:*** `dr4g0n_d3n1al_of_s3rv1ce@flare-on.com`
