Переполнение буфера - как найти возможность атаки? - PullRequest
0 голосов
/ 02 ноября 2018

Я читал об эксплойтах переполнения буфера и понимаю концепцию (я знаю о стеке, перезаписи адреса возврата, кода оболочки, NOP и т. Д.)

Все примеры эксплойтов на youtube, в статьях, в книгах относятся к программам, которые либо хранятся локально, поэтому у вас есть возможность изучить exe-файл или с открытым исходным кодом.

Мой вопрос: как хакер узнает, что существует вероятность атаки на удаленное приложение (т.е. программное обеспечение), и он / она может начать отправлять вредоносные строки? Как он / она находит подвиг?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Атаки с переполнением буфера, когда у вас нет доступного исходного кода, чаще всего обнаруживаются fuzzing . Fuzzing - это практика отправки недействительных, случайных или преднамеренно больших данных в систему, чтобы увидеть, как она себя ведет. То, что вы хотите видеть в качестве злоумышленника, - это скорее сбой, чем ошибка. Для удаленной системы сбой обычно выглядит как код ответа HTTP 500. Это говорит о том, что ваши данные переводят систему в неопределенное состояние. Имея это в виду, вы можете приступить к созданию атаки, чтобы использовать это неопределенное состояние.

Это причина, по которой стоит избегать полезных кодов возврата в диапазоне 400 и 500, возможно, возвращая только «400 - произошла ошибка» для любой возможной ошибки. В некоторых системах с высоким уровнем безопасности я возвращал 404 ошибки для каждой возможной проблемы. Это делает невероятную боль для отладки, но делает автоматизированное сканирование более сложным. Я не рекомендую этот подход в целом, но это стоит учитывать в системах с более высокой степенью безопасности.

0 голосов
/ 12 ноября 2018

Это действительно зависит от сценария атаки. Обычно в безопасности вы предполагаете, что злоумышленник знает все о вашей системе / безопасности (за исключением ваших секретов, то есть ключей шифрования). Предположим, вы атакуете приложение с открытым исходным кодом. Тогда код программного обеспечения известен всем. Другим сценарием может быть программное обеспечение с закрытым исходным кодом. Затем вы должны перепроектировать программу (как только вы ее получите), чтобы понять ее логику.

Существует много способов получения образцов целевого программного обеспечения. Почти никогда невозможно получить образец целевой программы каким-либо техническим способом или с помощью социальной инженерии.

...