Notification texts go here Contact Us Buy Now!

Kinh nghiệm cá nhân về một cuộc phỏng vấn kết thúc bằng một vụ lừa đảo

Bài chia sẻ kinh nghiệm cá nhân của tôi về một cuộc phỏng vấn đã kết thúc bằng một vụ lừa đảo.

Table of Contents

Trước đây, tôi muốn chia sẻ trải nghiệm cá nhân của mình về một cuộc phỏng vấn kết thúc bằng lừa đảo, nó thực sự nguy hiểm cho chúng tôi vì dữ liệu của chúng tôi có thể bị đánh cắp một cách vô thức (Vì cuộc phỏng vấn diễn ra trực tiếp và chia sẻ màn hình với người liên quan, vì vậy nếu chúng tôi không làm vậy không tập trung, chúng ta có thể bị mắc kẹt). May mắn thay, trong trường hợp của tôi, kẻ tấn công đã không thực hiện thành công.

Câu chuyện

Vào một ngày nắng đẹp, tôi tình cờ mở Linkedin thì có thông báo trò chuyện của ai đó đang mời làm việc từ xa, đây là cuộc trò chuyện.


Với lời đề nghị như vậy, tôi rất thích thú. Sau đó anh ấy đã tạo link phỏng vấn cấp độ bằng google Meet.


Sau đó, anh ấy phỏng vấn tôi và hỏi tôi đã làm những dự án nào, tôi giữ vai trò gì và mức lương mong muốn của tôi. Sau đó, anh ấy hỏi về người dùng GitHub của tôi. Tôi được mời tham gia một dự án sử dụng Node.js và anh ấy yêu cầu tôi chia sẻ màn hình của mình vì anh ấy nói đây là giai đoạn sàng lọc (cho đến nay vẫn chưa có gì đáng ngờ).


Sau khi được mời, tôi được yêu cầu đọc về dự án và sao chép dự án.


Tôi cũng đã sao chép dự án, và sau đó tôi luôn kiểm tra các hàm độc hại như eval (tại sao lại là eval??? vì hàm eval có thể thực thi các chuỗi dưới dạng mã. Nếu chuỗi đến từ một nguồn không đáng tin cậy (chẳng hạn như dữ liệu đầu vào của người dùng), thì kẻ tấn công có thể chèn mã độc để thực thi. Bạn có thể đọc thêm tại đây hoặc trong các bài viết khác how-evil-is-eval.


Tôi nhận ra có một tệp rất đáng ngờ trong tệp ./server/app.js:152 Đây là mã:


Chắc chắn, hàm này được gọi khi gọi utils.assets() trong tệp ./server/config/util.js


Ngoài ra, tôi kiểm tra các tập tin này ./public/models/.svn/bower_components/assets
(click để xem hình gốc)


Sau đó, trong buổi phỏng vấn. Tôi đã nói với người phỏng vấn (cố gắng tốt lắm Diddy, và kết thúc cuộc gọi).
Có một điều mà tôi nghi ngờ là mã JavaScript đã bị làm rối (obfuscated).

Thông thường, có nhiều lý do khiến mã bị làm rối chẳng hạn như:
- Làm cho mã khó đọc đối với mọi người.
- Tránh việc đảo ngược (reverse engineering) để hiểu mã luồng.
- Một số người chèn mã độc (cho phép họ đánh cắp các tệp quan trọng trên PC của chúng ta)

Tôi sẽ chia bài viết thành hai phần: Phân tích tĩnh và Phân tích động

1. Phân tích tĩnh

Trong lần đảo ngược này, tôi sẽ tập trung vào phần hàm JavaScript, bạn có thể kiểm tra tại đây.
Mã có thể được kiểm tra sau khi giải mã (tuy nhiên vẫn còn một số mã cần được sắp xếp lại để vẫn có thể đọc được) tại đây.

Ngoài ra, có một số hàm mà tôi bỏ qua. Vì vậy, tôi chỉ thảo luận về các hàm quan trọng.


Trong hàm _0x3c0bfd tìm kiếm thông tin như hostname, platform, homedir và tmpdir sau đó khởi tạo máy chủ tới http://86.104.74.51:1224.

Tôi kiểm tra máy chủ, nó đã được tạo từ ngày 2024-03-28


Ngoài ra, mã bị làm rối sẽ lấy dữ liệu nhạy cảm như:

1. Cấu hình ví Solana (Nếu bạn là người chơi tiền điện tử, bạn đã quen thuộc với điều này)


2. Firefox (Có thể đánh cắp thông tin mật khẩu được lưu trữ trong trình duyệt Firefox)


3. Ví Exodus (ví dùng để lưu trữ tiền điện tử)


4. Keychain (Giống như quản lý mật khẩu có thể lưu trữ thông tin như passwords, người dùng Mac chắc hẳn đã quen thuộc với nó)


5. Chrome (có thể đánh cắp thông tin mật khẩu được lưu trữ trong trình duyệt Chrome)


6. Trình duyệt Brave (có thể đánh cắp thông tin mật khẩu được lưu trữ trong trình duyệt Brave)


7. App Data/Config App (sẽ đánh cắp một số thông tin cấu hình trên mỗi ứng dụng đã cài đặt)


Sau đó sau khi lấy được thông tin quan trọng, nó sẽ được tải lên máy chủ http://86.104.74.51:1224/uploads với phương thức POST

2. Phân tích động

Bước đầu tiên, chuẩn bị VMware hoặc một môi trường đặc biệt để tránh các cuộc tấn công và thay đổi máy chủ thành localhost, ví dụ: http://86.104.74.51:1224 thành http://127.0.0.1:1224, sau đó thay đổi thành máy chủ localhost.

Đừng quên sử dụng trình gỡ lỗi.


Sau đó mở Chrome DevTools bằng quyền truy cập chrome://inspect và nhấp vào Open dedicated DevTools for Node


Sau đó, giao diện điều khiển sẽ tự động mở ra như thế này, sau đó nhấp vào Step.


Chúng ta có thể thấy nội dung của từng biến

_0x1e3887: sohais-MacBook-Air.local // hostname
_0x20b1f0: darwin // platform
_0x4753a5: /Users/sohai // homedir
_0x171a9c: /var/folders/d_/865r6lh90g5cn8bcy1p99z6m0000gn/T //tmpdir

Sau đó, gọi hàm _0x59c6d8 có một nền tảng kiểm tra, trong trường hợp này tôi sử dụng là darwin


Vì vậy, mã sẽ gọi yêu cầu đến URL http://127.0.0.1:1224/client/5/507 vì tôi đặt nó thành localhost, nó phải là 404


Nhưng nếu tôi thay đổi yêu cầu trực tiếp bằng curl với máy chủ gốc http://86.104.74.51:1224/client/5/507, phản hồi là mã python được mã hóa bằng base64 với zlib nén cũng sử dụng lặp lại 50 lần và tự động thực thi.


Đầu ra từ giải mã như thế này (Tiếp theo tôi sẽ thảo luận về từng chức năng)


Như chúng ta có thể thấy có 3 hàm chính:
1. download_payload
2. download_browse
3. download_mclip

Sau đó, mỗi hàm sẽ yêu cầu một tệp trên máy chủ http://86.104.74.51:1224/ sau đó sẽ lưu tệp trong homedir và thực thi tệp đó trong nền.

1. download_payload

Tạo một URL yêu cầu http://86.104.74.51:1224/client/5/507 tệp được lưu trên /homedir/.n2/pay hoặc /Users/sohai/.n2/pay

Sau đó, tệp được thực thi. Đối với tệp giải mã, bạn có thể kiểm tra tại đây

* Có một điều thú vị, nếu hệ điều hành là Darwin thì mã sẽ ngay lập tức stopped / exited.

2. download_browse

Tạo một yêu cầu URL http://86.104.74.51:1224/brow/5/507 tệp lưu tại /homedir/.n2/bow hoặc /Users/sohai/.n2/bow

Sau đó, tệp được thực thi. Đối với tệp giải mã, bạn có thể kiểm tra tại đây

Nếu tôi kiểm tra mã, đó là mã  nhưng đủ độc đáo để tìm ra tải trọng, vì nó được lưu trữ ngẫu nhiên trong máy chủ pastebin.

Sau đó, một số danh sách URL được XOR bằng khóa !!!HappyPenguin1950!!! như một ví dụ về pastebin https://pastebin.com/raw/suEqUQBY


Nếu tôi XOR một lần nữa thì đầu ra là http://23.254.229.101/cat-video (tôi đã tạo bộ giải mã tại đây)

3. download_mclip

Tạo một URL yêu cầu http://86.104.74.51:1224/mclip/5/507 tệp lưu tại /homedir/.n2/mlip hoặc /Users/sohai/.n2/mlip
Sau đó, tệp được thực thi. Đối với tệp giải mã, bạn có thể kiểm tra tại đây

Được thiết kế đặc biệt như một keylogger, nếu một ứng dụng như chrome.exebold.exe đang chạy, nó sẽ ghi lại mọi lần gõ bàn phím.

Sau đó sẽ có một kiểm tra ismnemonic (điều này dành riêng cho ví tiền điện tử) nói cách khác, kẻ tấn công cố tình nhắm mục tiêu vào ví tiền điện tử sau đó tất cả dữ liệu sẽ được gửi đến máy chủ http://95.164.7.171:8637/api/clip bằng phương thức POST.

Chuyển đến trình gỡ lỗi

Nếu tệp được tải xuống thành công. Sau đó, tải trọng sẽ được lưu trong tên tệp /Users/sohai/.sysinfo

Sau đó nó sẽ thực thi tệp python3 /Users/sohai/.sysinfo


Sau đó đoạn mã sẽ gọi hàm _0x4e6119(), chúng ta có thể thấy nó ở tab bên phải

Đoạn mã liệt kê thành công mọi ứng dụng như Chrome, Brave, Opera,


cũng như một số tiện ích mở rộng plugin trên Chrome như:
[
'nkbihfbeogaeaoehlefnkodbefgpgknn',
'ejbalbakoplchlghecdalmeeeajnimhm',
'fhbohimaelbohpjbbldcngcnapndodjp',
'ibnejdfjmmkpcnlpebklmnkoeoihofec',
'bfnaelmomeimhlpmgjnjophhpkkoljpa',
'aeachknmefphepccionboohckonoeemg',
'hifafgmccdpekplomjjkcfgodnhcellj',
'jblndlipeogpafnldhgmapagcccfchpi',
'acmacodkjbdgmoleebolmdjonilkdbch',
'dlcobpjiigpikoobohmabehhmhfoodbb',
'mcohilncbfahbmgdjkbpemcciiolgcge',

'agoakfejjabomempkjlepdflaleeobhb',
'omaabbefbmiijedngplfjmnooppbclkk',
'aholpfdialjgjfhomihkjbmgjidlcdno',
'nphplpgoakhhjchkkhmiggakijnkhfnd',
'penjlddjkjgpnkllboccdgccekpkcbin',
'lgmpcpglpngdoalbgeoldeajfclnhafa',
'fldfpgipfncgndfolcbkdeeknbbbnhcc',
'bhhhlbepdkbapadjdnnojkbgioiodbic',
'gjnckgkfmgmibbkoficdidcljeaaaheg',
'afbcbjpbpfadlkmhmclhkeeodmamcflc',
]
Một trong số đó là metamask.

Có một số bước mà tôi bỏ qua, chẳng hạn như (kiểm tra từng hồ sơ cho đến 200)


Ví dụ về lần lặp 71


Và sau khi tất cả dữ liệu đã được truy xuất thành công, cuối cùng tất cả các tệp sẽ được tải lên máy chủ của kẻ tấn công. rong trường hợp này, tôi đã thay đổi máy chủ gốc thành http://127.0.0.1:1224.


Từ phân tích động, chúng ta có thể lấy List API trên máy chủ 86.104.74.51

1. GET http://86.104.74.51:1224/client/5/507 (init dropper backdoor)
2. POST http://86.104.74.51:1224/uploads (upload logger)
3. GET http://86.104.74.51:1224/brow/5/507 (dropper berupa malware)
4. GET http://86.104.74.51:1224/mclip/5/507 (dropper berupa keylogger)
5. GET http://86.104.74.51:1224/pdown (tải xuống trình biên dịch python3 cho windows)

Sau đó là máy chủ bổ sung 95.164.7.171 như một vùng chứa keylogger

1. POST http://95.164.7.171:8637/api/clip (tải lên kết quả keylogger)

Danh sách các cổng mở:

Biết đâu, có người muốn thử hack lại thì sao...


Kết luận, với tư cách là nhà phát triển, chúng ta phải luôn cẩn thận khi một người nào đó mà chúng ta không biết chạy một chương trình, mặc dù trông giống như một câu hỏi phỏng vấn. Và luôn kiểm tra thư viện mà chúng ta sử dụng, có thể thư viện mà chúng ta sử dụng cũng không an toàn.
dependency-confusion

Và cuối cùng cảm ơn những người đã dành thời gian đọc bài viết này.



إرسال تعليق

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.