nim-loader
очень грубое, незавершённое приключение в изучение Nim путём сборки разрозненных ресурсов для создания загрузчика шелл-кода, реализующего распространённые техники обхода EDR/AV.
Это бардак и предназначено только для исследовательских целей! Пожалуйста, не ожидайте, что он скомпилируется и будет работать без ваших собственных изменений.
Инструкции
- Замените массив байтов в
loader.nim на свой собственный x64 шелл-код
- Скомпилируйте EXE и запустите его:
nim c -d:danger -d:strip --opt:size "loader.nim"
- Вероятно, вам потребуется настроить процесс, в который вы хотите внедряться, просматривая .nim файлы в используемой папке метода инъекции...
Реализованные функции
- Прямые системные вызовы, динамически разрешённые из NTDLL (спасибо @ShitSecure)
- Патчинг AMSI и ETW (спасибо @byt3bl33d3r)
- Отключение перехвата NTDLL (спасибо @MrUn1k0d3r)
- Инъекция CreateRemoteThread (спасибо @byt3bl33d3r, @ShitSecure)
Функции в разработке
- Техника Process Hollowing (спасибо @snovvcrash)
- Шифрование/дешифрование шелл-кода с помощью [AES в режиме CTR](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Counter_(CTR) (спасибо @snovvcrash)
- Замена всех совместимых API-вызовов на системные вызовы
- Добавление генератора шаблонов и компилятора, аргументов командной строки для шелл-кода, методов инъекции, путей процессов и т.д.
Обфускация
- Рассмотрите возможность использования denim от @LittleJoeTables для поддержки компиляции Nim с obfuscator-llvm!
Ссылки и вдохновение
- OffensiveNim от Marcello Salvati (@byt3bl33d3r)
- NimlineWhispers2 от Alfie Champion (@ajpc500)
- SysWhispers3 от klezVirus (@KlezVirus)
- NimPackt-v1 от Cas van Cooten (@chvancooten)
- unhook_bof.c от Mr. Un1k0d3r (@MrUn1k0d3r)
- NimGetSyscallStub от S3cur3Th1sSh1t (@ShitSecure)
- NimHollow от snovvcrash (@snovvcrash)
Примеры