Комментарии 61
Гениально! :)
-20
Извините, а что здесь гениального?
+53
Гениально то, что автор собеседуется на позицию инженера программной безопасности, и при этом запускает неизвестные программы под рутом (;
судя по
UPD: я буду читать комментарии…
судя по
root@lisa:~# ./CrackTheDoor
UPD: я буду читать комментарии…
0
Рут на виртуалке — это Серьёзно. Нельзя запускать ничего из-под Рута на инстансе, который живёт 5 минут. Ведь это же Рут.
+35
внизу уже ответили за меня…
-3
ну понятно что в виртуалке, но так же понятно что нет никаких причин чтобы производить исследование под рутом, а значит он сделал это по привычке… плохая привычка для безопасника, не находите?
-5
Если бы был не просто XOR, а комбинация хотя бы ADD и XOR — это был бы… ну, крякмис начального уровня.
Ну и в целом. В данной проге достаточно пропатчить один бит (заменить je на jne по адресу 0x8048898) и, в общем, всё.
Ну и в целом. В данной проге достаточно пропатчить один бит (заменить je на jne по адресу 0x8048898) и, в общем, всё.
+10
НЛО прилетело и опубликовало эту надпись здесь
а в IDA/hex rays это не проще было сделать?
+1
IDA и Hex-Rays надо вначале купить, не?
+10
Ида точно есть бесплатная, но вот есть ли в ней загрузчик ELFов — вопрос.
+1
Давным давно есть, даже на триал версиях.
www.hex-rays.com/products/ida/debugger/linux.shtml
www.hex-rays.com/products/ida/debugger/linux.shtml
+1
Когда это было проблемой для инженера по безопасности?
+8
IDA 5.0 бесплатна (без Hex-Rays, разумеется)
0
Тут одного тоже попросили…
У вас не так было?
+28
Соискатель на позицию безопасника запускает неизвестные файлы под рутом?
+26
Скорее всего в виртуалке
+1
А зачем даже в виртуалке запускать от рута? Тем более что дальше идут запуски от обычного пользователя (включая и финальный запуск со вводом правильного пароля), а значит рут в принципе не требовался.
0
del
0
Но я думаю не на продакшен же сервере… Специально поднятая виртуалка как вариант.
0
Я поставил breakpoint на PJeGPC4TIVaKFmmy53DJ
До этого это имя вроде не упоминается. Откуда оно?
+3
Я не особо много пользовался gdb, но предположу, что это какой-то алиас к адресу. Вот эта строчка:
=> 0x08048534 <PJeGPC4TIVaKFmmy53DJ+0>
0
Я тоже, но предполагаю что это обфусцированное название функции.
И строчка эта указана уже после того как был установлен брекпоинт.
И строчка эта указана уже после того как был установлен брекпоинт.
0
Как понять обфусцированное название функции? Название функции можно получить только в паре случаев: экспортированное имя, наличие отладочной информации рядом (pdb, к примеру) [возможны еще ситуации, но слишком много нюансов]. Названия функций не хранятся в скомпилированных приложениях.
0
В 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
+7
Оба имени рождены из двух наборов байт (в ASCII), образующих 16-байтовые массивы для функций (де)шифрования. Автору было так проще ориентироваться, это его нейминг. Updated: Ну, не прям из них, но частично. Он просто скопировал из hex-viewer'а читабельные символы этой области, скорее всего.
0
del
0
По сути Вы использовали gdb только в качестве дизассемблера. Для этого проще использовать objdump. И не нужно обходить ptrace.
+3
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Запускать неизвестные бинарники из-под рута? Мужик, ты не прошел собеседование.
0
Кстати, идея для подобного бинарника: можно ведь в системе немного подменить gdb, чтобы он немного глючил, и/или strace, ну и вообще подобные какие-нибудь программы. Понятное дело, что придётся предусмотреть разные дистры и вот это всё, но результат может быть забавным.
+7
If you want to try it yourself, send me an email for binary.
А кто-нибудь запросил бинарик у автора для тренировки?
0
crackmes.de — выбирай любой из тысяч. Там есть такие, от которых волосы дыбом встанут.
+1
А нельзя было в момент запроса пароля сделать core файл командой gcore, потом загрузить его в gdb, подняться вверх по стеку и дальше смотреть по контексту что там делается?
+3
Как по мне — очень странно, что такое дают на собеседованиях. На crackmes.de есть множество таких крякми, незатейливо использующих xor (у всех сложность 1 / 9).
И в чём заключается работа инженера программной безопасности, если не секрет?
И в чём заключается работа инженера программной безопасности, если не секрет?
+6
Поделился бы что ли бинарником, чтобы другие тоже могли поковырять…
0
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Автору поста: ИМХО код в таком оформлении
читается гораздо лучше, чем код в таком оформлении:
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; }
0
Так 2 часть будет или автор уже получил работу?
0
Пока на английском:
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/
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Меня попросили взломать программу на собеседовании