Несколько дней назад стало известно, что компания Lenovo с июня 2014 года устанавливает на ноутбуки adware и MiTM-прокси Superfish, который компрометирует SSL-соединения во всех браузерах, кроме Firefox.
Хакер Роберт Грэм (Robert Graham) сумел извлечь CA-сертификат Superfish и его секретный ключ, а также подобрать пароль, с помощью которого сгенерирован сертификат.
Программа Superfish упакована и зашифрована, так что для реверс-инжиниринга можно использовать дебаггер IDApro с записью активности программы в момент, когда она расшифровывает себя. Другой вариант — инфицировать себя и запустить procdump.
procdump -am VisualDiscovery.exe super.dmp
Затем Роберт запустил утилиту strings для извлечения читаемых строк.
strings super.dmp > super.txt
Там удалось найти строку "PRIVATE KEY".
Секретный ключ оказался защищён паролем, для подбора которого пришлось написать собственный cracker файлов SSL PEM (код программы pemcrack опубликован на Github).
Хотя cracker работает очень медленно, но Роберт Грэм применил хитрый трюк. Он предположил, что пароль есть в дампе памяти, так что использовал в качестве словаря при брутфорсе вышеупомянутый файл super.txt, отфильтровав только слова из строчных букв.
grep "^[a-z]*$" super.txt | sort | uniq > super.dict
Получившийся словарь из 2203 слов программа для брутфорса обработала за 10 секунд и выдала результат. Пароль — “komodia”.
Зная пароль, мы можем использовать секретный ключ и сертификат для MiTM-атаки на владельцев ноутбуков Lenovo, у которых установлен фирменный троян Superfish.