CVE-2012-3137 вече е стара новина. Неприятното в случая е, че няма изгледи да се коригира в актуалните версии на Oracle 10.2-11.2, тъй като е design flaw, а workaround-ите са доста неудобни за прилагане, особено в големи продукционни среди.

Накратко, проблемът е, че в процеса на оторизация към Oracle базата данни, listener-а връща към клиента AUTH_VFR_DATA (salt) и AUTH_SESSKEY, без значение дали опитът за оторизация е успешен или не. След внимателен анализ, Esteban Martinez Fayo открива, следната зависимост:

aes192(AUTH_SESSKEY, sha1(real_password+AUTH_VFR_DATA)+0x00000000)[:40] == 0x0808080808080808

Това дава възможност да се инициира offline bruteforce атака, след прихващането на AUTH_VFR_DATA и AUTH_SESSKEY. Това става чрез директен sniff по мрежата или чрез включване на trace logging на ниво support в oracle client.

След като написах набързо работеща bruteforce програма, реших да се възползвам от multithreading, rule engine и оптимизираните криптографски имплементации на hashkill. Преработката като plugin стана за 20 минути, докато се ориентирам в кода, а след като Милен пое нещата в свои ръце се сдобихме с първата в света публична версия на o5logon чупачка върху GPU – браво!

Накрая, понеже oracle trace файловете са пълни с всякаква информация, а изваждането на сесията и salt-а е неудобно на ръка, спретнах python скрипт, който parse-ва данните и ги представя в hashkill или John the Ripper формат.