Hey Leute, ich würde gerne von euch hören, welche Protokolle eure Favoriten sind oder mit welche ihr gute/schlechte Erfahrungen ihr gemacht habt.
Ich persönlich liebe HTTP(S). Ich Liste hier einige Punkte auf und bin offen für eure Kritik und alternative Methoden.
Vorteile
- Es ist ein Klartext Protokoll
- Es ist auf dem TCP/IP Layer aufgebaut (Keine eigene Socket Programmierung nötig)
- (Fast) Jede Programmsprache hat ein HTTP Client Library
- Es ist sehr leicht zu bedienen und selbst zu implementieren (falls keine Libs zur Verfügung stehen)
- Sollte via Reverse Conncetion ohne Probleme durch jede Firewall durchkommen
- Den Server Part können, vorhande Webserver übernehmen. (z.B. NGINX, Apache, etc)
- Durch TLS/SSL-Zertifikate ist die Verbindung mit dem Webserver (C2) verschlüsselt (Cert-Pinning bzw. Fingerprint Verifizierung implementieren nicht vergessen!)
- Mit Reverses-Proxies (nginx) und Redirector (z.B. socat) kann man den Haupt C2 Standort verschleiern
Nachteile
- Webserver kann nicht "pushen" der Client muss nach neuen Befehlen "requesten"
- Bidirektionale Verbindungen sind nicht so ohne weiteres möglich (Abhilfe vielleicht mit Websockets oder HTTP/2 ?)
- Dadurch dass HTTP/1.x ein Klartext Protokoll ist, entsteht oft sehr viel unnötiger und wiederholter Traffic
Alternativen
- HTTP/2 und SPDY
- MQTT oder ZMQ
- XMPP
Jetzt seid ihr dran. Postet eure Meinung/Kritik und eure Favoriten und bitte mit Begründung, damit wir alle mitlernen.