Комментарии 61
Гениально! :)
Извините, а что здесь гениального?
Гениально то, что автор собеседуется на позицию инженера программной безопасности, и при этом запускает неизвестные программы под рутом (;
судя по
UPD: я буду читать комментарии…
судя по
root@lisa:~# ./CrackTheDoor
UPD: я буду читать комментарии…
Рут на виртуалке — это Серьёзно. Нельзя запускать ничего из-под Рута на инстансе, который живёт 5 минут. Ведь это же Рут.
внизу уже ответили за меня…
ну понятно что в виртуалке, но так же понятно что нет никаких причин чтобы производить исследование под рутом, а значит он сделал это по привычке… плохая привычка для безопасника, не находите?
Если бы был не просто XOR, а комбинация хотя бы ADD и XOR — это был бы… ну, крякмис начального уровня.
Ну и в целом. В данной проге достаточно пропатчить один бит (заменить je на jne по адресу 0x8048898) и, в общем, всё.
Ну и в целом. В данной проге достаточно пропатчить один бит (заменить je на jne по адресу 0x8048898) и, в общем, всё.
НЛО прилетело и опубликовало эту надпись здесь
а в IDA/hex rays это не проще было сделать?
IDA и Hex-Rays надо вначале купить, не?
Ида точно есть бесплатная, но вот есть ли в ней загрузчик ELFов — вопрос.
Давным давно есть, даже на триал версиях.
www.hex-rays.com/products/ida/debugger/linux.shtml
www.hex-rays.com/products/ida/debugger/linux.shtml
Когда это было проблемой для инженера по безопасности?
IDA 5.0 бесплатна (без Hex-Rays, разумеется)
Тут одного тоже попросили…
У вас не так было?
Соискатель на позицию безопасника запускает неизвестные файлы под рутом?
Скорее всего в виртуалке
А зачем даже в виртуалке запускать от рута? Тем более что дальше идут запуски от обычного пользователя (включая и финальный запуск со вводом правильного пароля), а значит рут в принципе не требовался.
del
Но я думаю не на продакшен же сервере… Специально поднятая виртуалка как вариант.
Я поставил breakpoint на PJeGPC4TIVaKFmmy53DJ
До этого это имя вроде не упоминается. Откуда оно?
Я не особо много пользовался gdb, но предположу, что это какой-то алиас к адресу. Вот эта строчка:
=> 0x08048534 <PJeGPC4TIVaKFmmy53DJ+0>
Я тоже, но предполагаю что это обфусцированное название функции.
И строчка эта указана уже после того как был установлен брекпоинт.
И строчка эта указана уже после того как был установлен брекпоинт.
Как понять обфусцированное название функции? Название функции можно получить только в паре случаев: экспортированное имя, наличие отладочной информации рядом (pdb, к примеру) [возможны еще ситуации, но слишком много нюансов]. Названия функций не хранятся в скомпилированных приложениях.
В Unix-мире — хранятся, если их специально не вырезать.
root@lisa:~# file CrackTheDoor
CrackTheDoor: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, BuildID[sha1]=0x9927be2fe310bea01d412164103b9c8b2d7567ea, not stripped
Оба имени рождены из двух наборов байт (в ASCII), образующих 16-байтовые массивы для функций (де)шифрования. Автору было так проще ориентироваться, это его нейминг. Updated: Ну, не прям из них, но частично. Он просто скопировал из hex-viewer'а читабельные символы этой области, скорее всего.
del
По сути Вы использовали gdb только в качестве дизассемблера. Для этого проще использовать objdump. И не нужно обходить ptrace.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Запускать неизвестные бинарники из-под рута? Мужик, ты не прошел собеседование.
Кстати, идея для подобного бинарника: можно ведь в системе немного подменить gdb, чтобы он немного глючил, и/или strace, ну и вообще подобные какие-нибудь программы. Понятное дело, что придётся предусмотреть разные дистры и вот это всё, но результат может быть забавным.
If you want to try it yourself, send me an email for binary.
А кто-нибудь запросил бинарик у автора для тренировки?
crackmes.de — выбирай любой из тысяч. Там есть такие, от которых волосы дыбом встанут.
А нельзя было в момент запроса пароля сделать core файл командой gcore, потом загрузить его в gdb, подняться вверх по стеку и дальше смотреть по контексту что там делается?
Как по мне — очень странно, что такое дают на собеседованиях. На crackmes.de есть множество таких крякми, незатейливо использующих xor (у всех сложность 1 / 9).
И в чём заключается работа инженера программной безопасности, если не секрет?
И в чём заключается работа инженера программной безопасности, если не секрет?
Поделился бы что ли бинарником, чтобы другие тоже могли поковырять…
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Автору поста: ИМХО код в таком оформлении
читается гораздо лучше, чем код в таком оформлении:
int main()
{
if (ptrace(PTRACE_TRACEME, 0, 1, 0) < 0) {
printf("DEBUGGING... Bye\n");
return 1;
}
printf("Hello\n");
return 0;
}
читается гораздо лучше, чем код в таком оформлении:
int main() { if (ptrace(PTRACE_TRACEME, 0, 1, 0) < 0) { printf("DEBUGGING... Bye\n"); return 1; } printf("Hello\n"); return 0; }
Так 2 часть будет или автор уже получил работу?
Пока на английском:
erenyagdiran.github.io/I-was-just-asked-to-crack-a-program-Part-2/
erenyagdiran.github.io/I-was-just-asked-to-crack-a-program-Part-2/
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Меня попросили взломать программу на собеседовании