[C#]紀錄被綁架的資料庫還原
近來出現一波針對威聯通(QNAP)網路儲存裝置(NAS)的勒索攻擊 Qlocker,用戶裝置一旦感染之後,NAS 中的所有檔案便會被惡意軟體使用 7zip 壓縮並加上密碼保護。據了解,Qlocker 的幕後主使者在短短五天之内,不法所得已高達 26 萬美元以上。
根據資安媒體 BleepingComupter 報導,從 2021 年 4 月 19 日起觀測到Qlocker 勒索攻擊的足跡,且受害者數量快速增加,世界各國陸續傳出災情。使用者的 QNAP NAS 裝置一旦感染 Qlocker,當中所有檔案便會被惡意軟體使用 7zip 壓縮並加上密碼保護。而當 Qlocker 完成壓縮後,用戶的 NAS 中便會出現一個顯示「!!!READ_ME.txt」的未加密文字檔,內文即是威脅用戶付出 0.01 枚比特幣的贖金,以取得解壓縮用的密碼。
如同上述文章,最近花錢消災,取得加密密碼後,才發現後續工程才是一大麻煩啊!
先分析加密的資料有那些問題~
- 超過20M以上不會被加密壓縮
- 中文檔案的壓縮檔打開後的檔名是亂碼
- .7z檔 無法直接用套件解壓縮原本使用 DoNetZip 的套件,但是一直出現錯誤(無法視為ZipFile)
- 直接用cmd 執行7zip 解壓縮
process.StartInfo.FileName = @"C:\Program Files\7-zip\7z.exe";
process.StartInfo.Arguments = @"e E:\test.zip -o(檔案路徑) -p(密碼)";
process.Start();
}
- 原本打算先從cmd 取得檔名,然後利用.7z檔名取代內部錯誤的檔名,但是檔名是亂碼根本無法取得檔案。產生一個暫存資料夾,解壓縮一份檔案後取得資料夾內部檔案,利用File.Move()的方式,將檔名更換,最後刪掉暫存檔的資料。
程式範例:
Program.cs
using System;
using System.IO;
//log for .NET
using log4net;
using log4net.Config;
namespace SimpleSample
{
class Program
{
//取得日誌記錄物件(ILog)
private static ILog log = LogManager.GetLogger(typeof(Program));
static void Main(String[] args)
{
try
{
//讀取設定檔
XmlConfigurator.Configure(new FileInfo("C:\\log4netconfig.xml")); !!!我就一直卡在這裡啦~~~
//各等級的log顯示,顯示的等級會根據設定檔的設定而不同
//等級: debug < info < warn < error < fatal
log.Debug("這是debug等級");//目前設定檔設定為info,debug等級的log不會輸出
log.Info("這是info等級");
log.Warn("這是warn等級");
log.Error("這是error等級");
log.Fatal("這是fatal等級");
}
catch (Exception e)
{
System.Console.WriteLine(e.Message);
System.Console.WriteLine(e.StackTrace);
}
System.Console.ReadLine();
}
}
}
- https://docs.microsoft.com/zh-tw/dotnet/api/system.io.file.createtext?view=net-5.0
- https://luckystar1216.pixnet.net/blog/post/13159723
- https://blog.xuite.net/f8789/DCLoveEP/39200386
- 族繁不及備載....
留言
張貼留言