Дмитрий DarkByte Москин

Мой блог, да.
logo

Binary 100 - CodeGate 2012 write-up

Опубликовано 25.02.2012 автором Дмитрий Москин
Binary #1
First execute it and then hear and speak

Загружаем и распаковываем файл. Видим bin100.exe и запускаем его. Но что-то пошло не так и приложение вернуло ошибку
Необработанное исключение: System.IO.FileNotFoundException: Невозможно загрузить файл или сборку "Micr
osoft.Speech, Version=11.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" или один из зависимы
х от них компонентов. Не удается найти указанный файл.
в ConsoleApplication1.Program.Main(String[] args)



PeID сообщает, что файл запакован "CExe 1.0a - 1.0b -> Tinyware Inc.", распаковываем и получаем бинарник .NET, который успешно декомпилируется.

Анализ кода показывает, что была задумана какая то хитрая штука, которая говорила какой то текст и в ответ нужно было сказать какой то текст, но мне не удалось этого услышать :)

Так же видим, что в коде имеется зашифрованная строка "BM3aZTvv5iQAhK95EFLuz4ptaQA1f1/EqAOZktIz1RrwMPunDlqwww==" и ключ к ней "Nothing!", а алгоритм шифрования DES. Кроме того, в модуле WATCrypt инициализирующий вектор задаётся равным ключу. Okay, дешефруем на php.
<?
$key='Nothing!';
$str=base64_decode('BM3aZTvv5iQAhK95EFLuz4ptaQA1f1/EqAOZktIz1RrwMPunDlqwww==');
var_dump(mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_CBC, $key));

И получаем флаг: Nuno! Congratulations on your wedding!