5 Websites

5.1 Joomla

In diesem Kapitel wird kurz die Funktionsweise einer Wörterbuchattacke mittels Powershell gezeigt. In der Realität werden Hacker eher noch effektivere Sprachen und Tools als  Powershell nutzen, etwa PHP. 

Beispiel 1: Code einer Website auslesen
Den meisten von Euch ist wahrscheinlich bewusst, dass man bei jeder Website den zugrunde liegenden HTML/ CSS-Code in jedem Browser betrachten kann. In Firefox lässt sich mit dem AddOn "Firebug" gar besonders komfortabel hinter die Kulissen einer Seite schauen. Natürlich bietet auch Powershell mit MSDN dafür Mittel an, den Seitecode abzuzuziehen.

Set-StrictMode -Version "2.0"
Clear-Host
 
$Uri = "http://powershellpraxis.de"
 
$Request = [System.Net.WebRequest]::Create($Uri)
$Response= $Request.GetResponse()
$ResponseStream = $Response.GetResponseStream()
$StreamReader = New-Object System.IO.StreamReader $ResponseStream
$Out = $StreamReader.ReadToEnd()
Write-Host $Out
 
#mögliche Ausgabe geküzt

<!DOCTYPE html>
<html dir="ltr" lang="de-de">
<head>
   ...
  <meta name="author" content="KarlNapf_adm" />
  <meta name="description" content="Viele Informationen rund um die Powershell" />
  <meta name="generator" content="Joomla! - Open Source Content Management" />
  <title>Home</title>

Für einen Angreifer wären zum Beispiel die Informationen interessant, dass diese Website unter "Joomla"" läuft und dort ein User (wahrscheinlich sogar ein Administrator) namens "KarlNapf_adm" registriert ist. 
Default erfolgt bei Joomlainstallationen der Zugriff auf das Backend über die Adresse "<sitename>\administrator", worauf die Eingabemaske für die Credentials erscheint.

Unter "https://powershellpraxis.de/administrator" erscheint also die Eingabemaske, bei der wir einen Benutzernamen schon kennen:
 
 

Jetzt fehlt also nur noch eine Möglichkeit über die wir unser Wörterbuch mit den 345Tausend Standard-Passwörtern automatisiert in die Eingabemaske abfeuern können

Beispiel 2: Verbindung auf eine Website mit Credentials
Ich baue dieses Skript hier nicht zusammen. .Net liefert mit seinen Klassen jedenfalls alle Voraussetzungen für eine einfache Umsetzung, um "NetworkCredentials" solange an eine WebSite zu schicken, bis ein Success zurück kommt.

Solltet ihr also Joomla nutzen, sorgt unbedingt dafür, dass der Zugriff auf
- die Url der Administratorseite geändert ist  (ich verwende dazu: EasyCalcCheck)
- der Username nicht der Anmeldename ist und nicht einfach zu erraten ist. Etwa "admin", "psadmin",... machen es einem Hacker eher einfach
- das Passwort ausreichend lang ist und nicht in einem Passwort-Wörterbuch enthalten sein dürfte.

Sollte eure Joomla Admin-Seite über die Standardadresse erreichbar sein, checkt doch mal in den Logs am Webserver die fehlgschlagenen Anmeldeversuche.
  
Das war jetzt selbstverständlich nur ein ganz kleiner Excurs zum Thema Websitensicherheit! Wenn ihr wollt, sucht doch mal bei Youtube nach Videos zum Thema "SQLInjection", das ist ein guter Einstieg


5.2 Secrets (Passwörter, Kreditkartennummern, etc.) ausspähen

Powershell kann, so wie andere Sprachen auch, Prozesse dumpen und die Ausgabe nach bestimmten Mustern parsen. Im folgenden Skript wird fortlaufend der IE-Prozess gedumpt und die Ausgabe mittels regular Expression auf Muster von Kreditkartennummern geparst. 

PowerShell Memory Scraping for Credit Cards
Viel mehr ist nicht nötig, um daraus einen unauffälligen Trojaner zu entwickeln, der beliebige Secrets ausspäht und weiterleitet.