КОМАНДНАЯ СТРОКА WINDOWS

Шелл Windows. Командная строка конечно не панацея(PowerShell), но и не бесполезена. Как минимум стоит иметь такую заметку у себя на примете.

ЦИКЛ СТАТЕЙ SHELLCODE

  1. ВСЁ О SHELL
  2. КОМАНДНАЯ СТРОКА WINDOWS
  3. LINUX И ANDROID SHELL
  4. WEB SHELL
  5. НЕ БЕЗ METASPLOIT

ТЕОРИЯ

  • type [путь] — Показать содержимое файла.
  • dir [путь] — Показать содержимое директории.
  • cd [путь] — Перейти в директорию
  • start [путь] — Запустить приложение.
  • start /wait — Запустить приложение и ждать закрытия окна.
  • echo Первая > — Перезаписать файл и записать первой строкой.
  • echo Следующая >> — Записать в файл последней строкой.
  • echo %var_name% — Вывести переменную.
  • echo. — Пустая строка.
  • cls — Очистить консоль.
  • mkdir — Создать директорию.
  • rmdir — Удалить директорию.
  • rm — Удалить файл.
  • xcopy — Копировать файл.
  • rem и :: — комментарий
  • set a= — Присвоить в переменную. Пробелы после = интерпритируется как текст!
  • @echo off — ­Выключить отображение исполнения команд.
  • color 04 — Цвета окна. Первый символ — фон. Второй — текст.
  • title [текст] — Заголовок.
  • setlocal EnableDelayedExpansion — локальные переменные как !var! вместо %var%.
  • chcp 866 — Кодировка (кириллица 866 cmd).
  • :menu и goto menu — Аналог функций, но по другому. Буквально «начать код со строки».
  • IF — условие. Справка из командной строки содержательна:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Conditionally perform a command.

    File syntax
       IF [NOT] EXIST filename command

       IF [NOT] EXIST filename (command) ELSE (command)

    String syntax
       IF [/I] [NOT] item1==item2 command

       IF [/I] item1 compare-op item2 command

       IF [/I] item1 compare-op item2 (command) ELSE (command)

    Error Check Syntax
       IF [NOT] DEFINED variable command

       IF [NOT] ERRORLEVEL number command

       IF CMDEXTVERSION number command

    key
       item        A text string or environment variable, for more complex
                   comparisons, a variable can be modified using
                   either Substring or Search syntax.

       command     The command to perform.

       filename    A file to test or a wildcard pattern.

       NOT         perform the command if the condition is false.

       ==          perform the command if the two strings are equal.

       /I          Do a case Insensitive string comparison.

       compare-op  can be one of
                    EQU : Equal
                    NEQ : Not equal

                    LSS : Less than <
                    LEQ : Less than or Equal <=

                    GTR : Greater than >
                    GEQ : Greater than or equal >=

                    This 3 digit syntax is necessary because the > and <
                    symbols are recognised as redirection operators
    IF will only parse numbers when one of (EQU, NEQ, LSS, LEQ, GTR, GEQ) is used.
    The == comparison operator always results in a string comparison.
  • %1 %2 %3 — Если из консоли вызвать «file.bat 123», то первый параметр будет присвоен в переменную %1.
  • mode con:cols=60 lines=21 — Размер окна (не будет прокрутки, если использовать lines).
  • set /p var_name= — Ввод текста в переменную.
  • pause — Самое важное — пауза чтобы что-то показать!
  • FOR — Перебирать файлы в одной папке.
    1. FOR /R — Перебирать файлы (с рекурсией в подпапках).
    2. FOR /D — Перебирать несколько папок.
    3. FOR /L — Перебирать ряд чисел.
    4. FOR /F — Перебирать строки в текстовом файле.
    5. FOR /F — Перебирать вывод команд.

ПРАКТИКА

Создаём в любом редакторе кода файл с расширением .bat и кодировкой 866 (консольная кириллица).

  • Консольное меню.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    @echo off
    color 04
    setlocal EnableDelayedExpansion

    set menu_c=Choose
    set menu_b=Back
    set screen-1=Screen 1
    set screen-2=Screen 2



    :menu

    title Menu
    echo 1 - %screen-1%
    echo 2 - %screen-2%
    echo.
    set /p choice="%menu_c%: "
    if not defined choice goto menu

    if "%choice%"=="1" ( cls
      cls & goto screen-1
    )
    if "%choice%"=="2" ( cls
      cls & goto screen-2
    )
    cls & goto menu



    :screen-1

    title %screen-1%
    echo %screen-1%
    echo.
    echo 1 - Example 1
    echo 0 - %menu_b%
    echo.
    set /p choice="%menu_c%: "
    if not defined choice goto screen-1

    if "%choice%"=="1" ( cls
      echo This is example 1
      pause
    )
    if "%choice%"=="0" ( cls
      cls & goto menu
    )
    cls & goto screen-1



    :screen-2

    title %screen-2%
    echo %screen-2%
    echo.
    echo 1 - Example 2
    echo 0 - %menu_b%
    echo.
    set /p choice="%menu_c%"
    if not defined choice goto screen-2

    if "%choice%"=="1" ( cls
      echo This is example 2
      pause
    )
    if "%choice%"=="0" ( cls
      cls & goto menu
    )
    cls & goto screen-2
  • Добавить в автозагрузку.
    1
    Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "название в автозагрузке" /t REG_SZ /d "путь до файла" /f
  • Сменить IP и DNS адрес.
    1
    2
    3
    4
    5
    6
    7
    set /p w_interface="Interface: "
    set /p w_ip="IP-address: "
    set /p w_mask="Mask: "
    set /p w_gateway="Gateway: "
    set /p w_dns="DNS: "
    netsh interface ip set address "!w_interface!" source=static !w_ip! !w_mask! !w_gateway! 1
    netsh interface ip set dns "!w_interface!" source=static !w_dns!
  • Создать службу с именем NewService, путь к которой C:\new_service.exe, отображаемое имя new, и поставить автозапуск:
    1
    Sc create NewService binPath=C:\new_service.exe DisplayName='new' type=own start=auto

    Sc config NewService DisplayName=’old’ — изменить параметры созданной службы.

    Sc delete NewService — удалить службу.

  • Блокировщик портов:
    1
    2
    3
    4
    netsh advfirewall firewall add rule name="BLOCK 135 PORT" dir=in action=block protocol=TCP localport=135
    netsh advfirewall firewall add rule name="BLOCK 137 PORT" dir=in action=block protocol=TCP localport=137
    netsh advfirewall firewall add rule name="BLOCK 139 PORT" dir=in action=block protocol=TCP localport=139
    netsh advfirewall firewall add rule name="BLOCK 445 PORT" dir=in action=block protocol=TCP localport=445
    • add
      • add — добавить новое правило.
      • delete — удалить правило.
      • set — изменить правило.
      • show — проверить изменилось ли содержимое правил.
    • name — имя правила как собственный комментарий.
    • dir
      • in — входящие подключения.
      • out — исходящие подключения.
    • action
      • allow — разрешает подключение в условиях правила
      • block — запрещает подключение в условиях правила
      • bypass — разрешает только подключения, защищенные с помощью протокола IPsec
    • program — путь до программы.
    • service — имя службы или any(любым).
    • description — описание правила.
    • protocol — TCP или UDP, или другие.
    • localport — сетевой порт.
    • Остальное можно посмотреть здесь.