Введение

Привет!

С момента выхода второй части прошло несколько месяцев, и я готов поделится новым опытом.

В данном посте мы более углубленно изучим Self-code injection, как детектят, как обходят и в конце напишем свой собственный стейджер. Будет код на Си, чуть-чуть ассемблера и много ссылок на исходники и первоисточники.

Дисклеймер

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

Работа над ошибками

Вернемся ненадолго в прошлое, во вторую часть, в которой не очень опытный малварьщик говорит что-то про реверс-шеллы

1. Реверс шеллы?

Моя ошибка № 1

Моя ошибка № 1

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

2. Обфускация?

Еще одна тема, которая при перечитывании вызывает у меня испанский стыд, это то, как я обфусцировал код:

Моя ошибка № 2

Моя ошибка № 2

За такое конечно нужно увольнять 😟

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

Моя ошибка № 3

Моя ошибка № 3

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

Ну вроде и всё, с основными ляпами разобрались, идем дальше.

Всё с начала