Archive for the ‘checkpwd’ Category

Oracle Password Algorithmus 11g – PoC Code

Freitag, September 21st, 2007

Mit Oracle 11g hat Oracle einen neuen Algorithmus zum Hashen der Oracle-Passworte gewählt. Anstatt des alten Hash-Verfahrens, das auf DES basiert, verwendet der neue Algorithmus SHA-1. Weiterhin ist neu, dass nun auch Groß- und Kleinbuchstaben unterstützt werden.

Unser Partner, Recurity Labs GmbH, einer der führenden Experten für reverse Engineering, hat sich den neuen Oracle Passwort Algorithmus angesehen. Ein Blog-Eintrag mit der Analyse des Oracle Password Algorithmus von Recurity GmbH findet sich hier.

Thorsten Schröder von Recurity Labs GmbH (die vor kurzem umbenannte S*bre Labs GmbH) hat auch ein kleines Python Script geschrieben. Die an Oracle 11g angepasste checkpwd Version 2.0 und Performance-Werte gibt es am Montag.

Die Veröffentlichung des Oracle Passwort Algorithmus ist kein Security Problem, sondern hilft, auch 11g Datenbanken auf schwache Passworte zu überprüfen.

#!python

# „PoC“ Oracle 11g Database password-hash cracker
# This program uses the password hash value „spare4“ from the internal
# oracle user-database and a list of passwords via stdin to calculate a new
# hash value of the plaintext password. The new generated hash value is subsequently
# compared against the hash-value from sys.user, the internal oracle user-database.

# Author: Thorsten Schroeder <ths „theAthing“ recurity-labs.com>
# Berlin, 19. Sep. 2007

# TODO:
# cut passwords at length 30

import hashlib
import binascii
import sys

def main():

if( len(sys.argv[1]) != 60 ):
usage()
sys.exit(1)

try:
oraHash = sys.argv[1]
oraSalt = oraHash[40:60]
oraSha1 = oraHash[:40]
oraSha1 = oraSha1.upper()

print „[+] using salt: 0x%s“ % oraSalt
print „[+] using hash: 0x%s“ % oraSha1

for passwd in sys.stdin:
passwd = passwd.rstrip()
#print „[*] trying password „%s““ % passwd

s = hashlib.sha1()
s.update(passwd)
s.update(binascii.a2b_hex(oraSalt))
if( s.hexdigest().upper() == oraSha1 ):
print „[*] MATCH! -> %s“ % passwd
sys.exit(0)

except Exception, e:
print „[!] Error: „, e
usage()
raise

sys.exit(0)

def usage():
print „[+] usage: ./ora11gPWCrack.py <hex-value> < wordlist.txt“
return

if __name__ == ‚__main__‘:
main()

checkpwd 1.23 und sidguess für MacOS

Montag, Juli 2nd, 2007

Es gibt nun auch Checkpwd 1.23 und sidguess für Mac OSX als PPC Executable. Die deutsche Version 1.23 von Checkpwd zeigt allerdings nur noch an, ob Passworte schwach sind, aber nicht mehr, wie das Passwort lautet (§202c StGB läßt grüßen…).

Leider gibt es momentan nur eine PPC Version des Oracle Instant Clients für Mac, weshalb auch checkpwd für die PowerPC Architektur kompiliert wurde. Es bleibt zu hoffen, dass Oracle den Instant Client auf die Intel-Architektur migriert.

Hardcopy Checkpwd Mac

Sidguess

Sidguess Mac OSX