Patcha bort certvalidering

Från FriBID
Hoppa till: navigering, sök

Om man försöker göra en "Man In The Middle" och ansluta BankID-klienten mot en egen server, så märker man snart att rotcertifikatet för cavainternal.bankid.com är hårdkodat i BankID-klienten. Om rotcertifikatet inte stämmer så loggas felkod 12045 (hexadecimalt 0x2f0d) i C:\Documents and Settings\User\Application Data\BankID\Logs\Log1.txt.

Troligtvis är bara det första steget nödvändigt, men ev kan även steg 2-3 behövas också. För att styra om trafiken kan man använda iptables, enligt dessa instruktioner.

1. Patcha bort kontroll av fel 12045[redigera]

Felkod 12045 heter även ERROR_WINHTTP_SECURE_INVALID_CA, och är normalt sett en felkod som returneras från WinHTTP.dll i Windows. Men BankID Säkerhetsprogram verkar göra sin egen certkontroll som även denna använder felkod 12045. Kontrollen kan enkelt patchas bort genom att ersätta hex-strängen nedan:

84 c0 75 41 8d 95 60 fe
84 c0 74 41 8d 95 60 fe

Detta ändrar instruktionen JNZ till JZ vilket helt enkelt inverterar kontrollen. I BankID 5.1.2 finns denna hexsträng på position 17f8da i BankID.exe. Hittar du inte sekvensen ovan, så sök på 0d 2f 00 00 istället och leta efter en JNZ-instruktion ovanför.

2. Ändra rotcert i BankID.exe[redigera]

Rotcertifikat för både den riktiga BankID-servern samt några testservrar finns hårdkodade i BASE64-format i BankID.exe.

Sök på MIID6jCCAt och ersätt hela strängen (som är null-terminerad) med din servers (rot-)certifikat. Observera att certifikatet lagras någon annanstans också, så steg 1 behövs ändå.

3. Ta bort certifikatkontrollen i Windows[redigera]

Detta är testat på Windows XP och är aningen riskabelt eftersom en systemfil modifieras. Observera att detta steg kanske inte behövs, så testa en gång utan först :)

  1. Inaktivera Systemåterställning. Högerklicka på "Den här datorn" och välj Egenskaper så hittar du inställningen.
  2. Ta ut ev. Windows-CD från datorn (viktigt om man kör en virtuell maskin)
  3. Kopiera winhttp.dll från system32 till en egen katalog.
  4. Öppna filen i en hexeditor och ersätt 7407b80d2f med 7407b80000.
  5. Ersätt winhttp.dll i C:\windows\system32\dllcache med den patchade filen.
  6. Ersätt winhttp.dll i C:\windows\system32 med den patchade filen.
  7. Klicka bort ev. varningar om Windows File Protection och starta om datorn.

Detta bör man förstås inte göra på en dator som man använder till t.ex. bankärenden eftersom det helt tar bort säkerheten för alla program som använder HTTPS via WinHTTP (dvs inte bara för BankID).

Länkar[redigera]

  • frhed - en hexeditor för Windows. Använd syntaxen <bh:12><bh:34> osv. för att söka på hexadecimala byte-strängar.