Das nennt sich Man-in-the-middle und ist einfacher, als man denkt (eine flotte Serveranbindung vorausgesetzt). Du schleust den User auf die gefälschte Seite, verschleierst im Idealfall noch die URL (z.B. mit Punycode, in einigen Browsern noch möglich) und forderst den user auf seine Einlogdaten anzugeben. Hat er dies getan baut dein Server wiederum eine Verbindung zum original Bankserver auf und loggt sich mit genau diesen Daten dort ein (hat den Vorteil, daß absichtliche Falscheingaben zum Testen erkannt werden können). Jetzt ist dein Server der Bankkunde, kann sämtliche Kontodaten lesen und dem User als seine Inhalte präsentieren. Tätigt der User jetzt eine Überweisung, so eröffnen isch zwei Möglichkeiten:
Die erste, Du greift die gültige TAN ab und teilst dem Kunden mit die Transaktion sei gescheitert. Später kannst Du nun mit dieser TAN eine beliebige Aktion ausführen (Gefahr hierbei ist, daß die TAN gar nicht gültig war).
Zweite Möglichkeit, Du reichst die Transaktion des Kunden wirklich direkt an den echten Bankserver weiter, allerdings mit geänderten Transaktionsdaten. Statt "100 Euro auf das Konto von Oma" geht wirklich "1.000 Euro auf dein Konto in Vanuatu", der Kunde sieht aber nur 100 Euro für Oma. Um es noch einträglicher zu machen kann man dem Kunden mitteilen die TAN wäre falsch gewesen, er müsse eine neue eingeben, dann kann man das Spiel gleich zwei Mal machen.