Analyse und Entschlüsselung von Ransomware

Vorwort

In den letzten zwei Tagen gab es eine Scoring-Software in einem Lernkraftwerk unter dem Banner der Scouring-Software, aber es handelt sich tatsächlich um eine Ransomware. Sicher genug, diese Art von induktivem Namen wurde rekrutiert. Das Bild unten ist eine Ransomware-Box. Ich habe auch diese Probe erhalten und analysiert.

Fügen Sie hier eine Bildbeschreibung ein

Beispielinformationen

Wenn Sie sich diese Reihe von Laufzeitbibliotheken und dieses Software-Symbol ansehen und nicht im Voraus wissen, dass es sich um Ransomware handelt, denken Sie möglicherweise, dass es sich um normale Software handelt.

Fügen Sie hier eine Bildbeschreibung ein

Programm HASH

Fügen Sie hier eine Bildbeschreibung ein

Kompilieren Sie mit .NET

PE: library: .NET(v4.0.30319)[-]          
PE: linker: Microsoft Linker(48.0*)[EXE32]

Beispielverhalten

Ziehen Sie die Probe in das Zunderschwert

Lassen Sie das Programm im angegebenen Verzeichnis los und stellen Sie den Autostart ein. Beginnen Sie nach dem Löschen mit der Verschlüsselung der Dateien

Fügen Sie hier eine Bildbeschreibung ein

Nach Abschluss der Dateiverschlüsselung werden auch die Verschlüsselungsliste und die Bitcoin-Brieftaschenadresse ausführlich aufgelistet.

Fügen Sie hier eine Bildbeschreibung ein

Probenanalyse

Verwenden Sie dnspy, um das Beispiel zu öffnen und die Namensstruktur zu betrachten. Die Beispielfunktion ist grob in vier Teile unterteilt: Blocker, Hacking, Locker, Windows

Fügen Sie hier eine Bildbeschreibung ein

Schauen Sie sich zuerst Blocker an. Es ist mit einem Bitcoin-Informationsnetzwerk verbunden. Einige Informationen werden über die Website-API abgerufen. Die Absicht des Autors kann hier nicht beurteilt werden.

Fügen Sie hier eine Bildbeschreibung ein

Die beiden Teile von Hacking und Windows bestehen darin, das Programm im angegebenen Verzeichnis freizugeben und den Selbststart einzurichten und dann selbst zu löschen. Die folgende Abbildung zeigt, wie das Beispiel selbst gelöscht wird

Fügen Sie hier eine Bildbeschreibung ein

Locker ist eine verschlüsselte Datei und der Schlüssel der verschlüsselten Datei

Fügen Sie hier eine Bildbeschreibung ein

Beziehen Sie das verschlüsselte Dateisuffix aus der Ressource

.dwg .dxf .bak .exb .drw .igs .stp .sldasm .sldprt .SLDPRT .step .prt .x_t .stl .CATPart .CATProduct .CATdrawing .rspag .NC .lxe .3dm .max .php .asp .c .java .sql .mdb .mdf .prproj
.jpg .jpeg .txt .doc .dot .docx .zip .rar .pdf .7z .tar .wim .ppt .pot .pps .pptx .xls .xlsx .raw .tif .gif .png .bmp .rb .class .py .js .aaf .aep .aepx .caj .key .rc .sln .dll
.wav .mp3 .wma .mp4 .mkv .3gp .mpeg .avi .3g2 .mov .sgi .asf .asx .flv .mpg .wmv .flc .vob .m3u8 .dat .csv .efx .sdf .vcf .xml .ses .qbw .QBB .QBM .torrent .xml .config .pdb
.idml .pmd .xqx .xqx .ai .eps .ps .svg .swf .fla .as3 .as .docm .dotx .dotm .docb .rtf .crt .indt .indb .inx .accdb .db .dbf .cpp .cs .h .jar .exe
.wpd .wps .msg .pdf .xls .xlt .xlm .xlsx .xlsm .xltx .xltm .xlsb .xla .xlam .xll .xlw .aet .ppj .psd .indd .indl .GTX .gxw .MCE .drv .chm
.pptm .potx .potm .ppam .ppsx .ppsm .sldx .sldm .aif .iff .m3u .m4u .mid .mpa .ra .plb .prel .Iif .nd .rtp
.QBI .QBR .cnt .des .v30 .qbo .ini .lgb .qwc .qbp .qba .tlg .qbx .qby .1pa .qpd .txt .set .cur .des
.tlg .wav .qsm .qss .qst .fx0 .fx1 .mx0 .fpx .fxr .fim .ptb .pfb .cgn .vsd .cdr .cmx .cpt .csl
.dsf .ds4 .eps .ps .prn .pif .pcd .pct .pcx .plt .rif .svg .swf .tga .tiff .psp .ttf .wpd .wpg .wi
.raw .wmf .txt .cal .cpx .shw .clk .cdx .cdt .fpx .fmv .img .gem .xcf .pic .mac .met .pp4 .pp5 .ppf
.xlsm .ppt .nap .pat .ps .prn .sct .vsd .wk3 .wk4 .xpm .cs .resx .wbfs .iso .mdf .apk .api .gho

Bitcoin-Brieftaschenadresse

Fügen Sie hier eine Bildbeschreibung ein

Entschlüsselungsprogramm

Diese Ransomware ist eigentlich sehr einfach. Die Verschlüsselung verwendet nur die AesCryptoServiceProvider-Funktion der Programmierschnittstelle des Verschlüsselungsprogramms. Der Schlüssel ist nicht verborgen oder verschleiert. Schreiben Sie den Entschlüsselungscode und verwenden Sie den Code des Autors direkt wieder.

Hier liste ich die Schlüsselcodes für die Entschlüsselung auf

		private static void DecryptFile(SymmetricAlgorithm alg, string inputFile, string outputFile)
		{
			byte[] array = new byte[65536];
			using (FileStream fileStream = new FileStream(inputFile, FileMode.Open))
			{
				using (FileStream fileStream2 = new FileStream(outputFile, FileMode.Create))
				{
					using (CryptoStream cryptoStream = new CryptoStream(fileStream2, alg.CreateDecryptor(), CryptoStreamMode.Write))
					{
						int num;
						do
						{
							num = fileStream.Read(array, 0, array.Length);
							if (num != 0)
							{
								cryptoStream.Write(array, 0, num);
							}
						}
						while (num != 0);
					}
				}
			}
		}

		// Token: 0x06000003 RID: 3 RVA: 0x00002158 File Offset: 0x00000358
		private static void DecryptFile(string path, string encryptionExtension)
		{
			try
			{
				if (!path.EndsWith(encryptionExtension))
				{
					return;
				}
				string outputFile = path.Remove(path.Length - 4);
				using (AesCryptoServiceProvider aesCryptoServiceProvider = new AesCryptoServiceProvider())
				{
					aesCryptoServiceProvider.Key = Convert.FromBase64String("OoIsAwwF23cICQoLDA0ODx==");
					aesCryptoServiceProvider.IV = new byte[]
					{
						0,
						1,
						0,
						3,
						5,
						3,
						0,
						1,
						0,
						0,
						2,
						0,
						6,
						7,
						6,
						0
					};
					Form1.DecryptFile(aesCryptoServiceProvider, path, outputFile);
				}
			}
			catch
			{
				return;
			}
			try
			{
				File.Delete(path);
			}
			catch (Exception)
			{
			}
		}

		// Token: 0x06000004 RID: 4 RVA: 0x00002214 File Offset: 0x00000414
		internal static void DecryptFiles(string path)
		{
			string encryptionExtension = ".exe";
			Form1.DecryptFile(path, encryptionExtension);
			File.Delete(path);
		}

Haben Sie das Entschlüsselungsprogramm geschrieben, lassen Sie es uns testen

Ich habe eine verschlüsselte txt-Datei extrahiert und in das Entschlüsselungsprogramm gezogen. Sie können sehen, dass die txt-Datei wiederhergestellt wurde und die Entschlüsselung erfolgreich war

Fügen Sie hier eine Bildbeschreibung ein

um zusammenzufassen

Technisch gesehen ist dieses Ransomware-Programm nicht clever. Im Vergleich zur heutigen Ransomware ist es ein bisschen pädiatrisch. Das .net-Programm verwirrt es nicht und verbirgt den Schlüssel nicht mit einem symmetrischen Verschlüsselungsalgorithmus. Es ist wirklich ein ehrlicher Junge.

Technologie ist unschuldig, und Lerntechnologie muss sie auf die richtige Weise einsetzen. Die Bösen werden sich auszahlen

Quellcode-Erfassung:
https://github.com/Iam0x17

Ich denke du magst

Origin blog.csdn.net/weixin_44001905/article/details/104415850
Empfohlen
Rangfolge