Gần đây có một kỹ thuật trích xuất Certificate từ những phần mềm nổi tiếng để cấy vào phần mềm riêng của bạn, mục đích của việc này là tránh bị Antivirus phát hiện cũng như tính năng Windows Defender SmartScreen cảnh báo nhầm là phần mềm độc hại. Trong bài này mình sẽ Demo cách cấy Certificate của ứng dụng Unikey vào ứng dụng .exe tự build và kiểm tra xem có hoạt động bình thường không nhé.
Phương pháp này được lan truyền trên các diễn đàn Hacker, nhầm mục đích bypass Antivirus. Tuy nhiên trong bài này mình chỉ hướng dẫn để nghiên cứu, tránh lạm dụng vi phạm pháp luật nhé.
Lưu ý: việc đưa chứng chỉ vào App chỉ là 1 phần nhỏ trong việc bypass antivirus, chứ không phải cứ có chứng chỉ là bypass được đâu nhé. Các antivirus hiện nay còn nhận diện theo hành vi, kiểu mã hóa nửa…
Tạo File thực thi bằng Go Lang
Tạo một file Go Lang với chức năng mở một link bất kỳ. File này chủ yếu dùng để Test sau khi cấy Certificate xong thì có thực thi được không.
Để thực hiện bạn tải và cài đặt Go Lang trên máy tính
Mở notepad copy đoạn code bên dưới và save với tên File: anonyviet.go
tại thư mục D:, như vậy ta sẽ có đường dẫn D:anonyviet.go
package main import ( "fmt" "log" "os" "os/exec" "runtime" ) func main() { baseURL := "https://anonyviet.com/" if len(os.Args) == 2 { baseURL = os.Args[1] } openBrowser(baseURL) } func openBrowser(targetURL string) { var err error switch runtime.GOOS { case "linux": err = exec.Command("xdg-open", targetURL).Start() // TODO: "Windows Subsytem for Linux" is also recognized as "linux", but then we need // err = exec.Command("rundll32.exe", "url.dll,FileProtocolHandler", targetURL).Start() case "windows": err = exec.Command("rundll32.exe", "url.dll,FileProtocolHandler", targetURL).Start() case "darwin": err = exec.Command("open", targetURL).Start() default: err = fmt.Errorf("unsupported platform %v", runtime.GOOS) } if err != nil { log.Fatal(err) } }
mở CMD lên gõ lệnh:
D: go build anonyviet.go
Nếu thấy trong ổ D xuất hiện file anonyviet.exe là tạo xong file thực thi. Bây giờ bạn click phải chuột -> Properties sẽ không thấy Tab Digital Signatures, do chưa có Certificate. Bạn thực thi thử file anonyviet.exe xem có hiện lên trang Web không nhé.
Import Certificate vào File thực thi
Trong bài Lab này mình sẽ ví dụ trích xuất Certificate của phần mềm Unikey của bác Phạm Kim Long vào file anonyviet.exe mới tạo ở trên.
Trên Kali Linux thực hiện các lệnh sau:
git clone https://github.com/anonyvietofficial/Mangle.git cd Mangle go build Mangle.go mv Mangle /usr/local/bin/
Tiến hành Copy file UnikeyNT.exe và anonviet.exe vào thư mục Mangle.
Bây giờ chúng ta sẽ tiến hành trích xuất Certificate từ UnikeyNT.exe sang anonyviet.exe và đặt tên mới là anonyviet_ok.exe, câu lệnh như sau:
Mangle -C /home/anonyviet/Mangle/UniKeyNT.exe -I anonyviet.exe -O anonyviet_ok.exe
Bạn tham khảo các tham số sau:
- -C: đường dẫn file muốn trích xuất Certificate
- -I: đường dẫn file thực thi của bạn
- -M: Chỉnh sửa tệp PE để loại bỏ các chỉ số Go
- -O: đặt tên file mới
- -S: tăng dung lượng cho file (tính theo MB)
Bây giờ bạn thấy file anonyviet_ok.exe đã xuất hiện, đây là file đã được cấy Certificate của UnikeyNT.exe vào. Bạn hãy copy file này về máy Windows, kiểm tra trong Properties xem có tab Digital Signatures không nhé.
Bạn có thể double click vào chỗ Name of sign để xem thông tin chứng chỉ này. Bây giờ hãy thử thực thi xem nào, nó vẫn chạy bình thường nhé.!
Cách Mangle hoạt động để cấy chứng chỉ vào App
Mangle cũng có khả năng lấy toàn bộ chuỗi và tất cả các thuộc tính từ chứng chỉ ký mã từ một file exe, dll và sao chép nó vào một tệp khác. Các thông tin gồm ngày ký, chữ ký truy cập và các thuộc tính khác.
Mangle có thể xóa các chuỗi Indicators of Compromise (IoC) đã biết và thay thế chúng bằng các ký tự ngẫu nhiên, thay đổi tệp bằng cách tăng kích thước để tránh EDR và có thể sao chép các chứng chỉ ký mã từ các tệp hợp pháp. Khi làm như vậy, Mangle giúp các payload tránh khỏi Antivirus.
Hiện nay Magle chỉ có thể sao chép Certificate vào các file .exe được build từ Go Lang, sắp tới có thể tác giả sẽ nâng cấp để có thể cấy vào các file thực thi khác.
Ngoài ra bạn có thể dùng một số công cụ khác tương tự như SigThief được viết bằng Python cũng khá dễ sử dụng.