Назад | Перейти на главную страницу

какой хороший способ защитить командный файл?

У меня есть пакетные сценарии, которые планируется запускать ежедневно. В некоторых скриптах есть пароль. Я хочу защитить пакет от чтения или открытия лицами, не имеющими полномочий открывать или читать их.

У меня вопрос: как лучше защитить командный файл? Есть ли бесплатный инструмент или инструмент с открытым исходным кодом, который компилирует пакетный файл?

Вы можете использовать списки контроля доступа NTFS для защиты файлов от пользователей, не имеющих прав на их выполнение. Пользователи, которым разрешено выполнять их, по определению могут читать пароли (в запутанной форме, если вы решите скрыть их). Доступ для выполнения подразумевает доступ для чтения. Если сценарий может деобфускировать пароль, то и пользователь.

Предполагая, что вы пытаетесь защитить пароли от пользователей, которым разрешено выполнять сценарии, то, что вы говорите, невозможно. Вы действительно говорите:

У нас есть пароли, которые мы должны предоставить пользователям, чтобы они могли использовать какое-то программное обеспечение, но мы не хотим, чтобы пользователь знал, что это за пароли.

По определению, пользователь должен иметь возможность восстанавливать пароли, чтобы использовать их. Любая обфускация или кодирование паролей, которые вы выполняете, - это просто «ударная скорость» для определенного пользователя, чтобы узнать, что это за пароли.

Пока контекст выполнения этого скрипта - это пользователь, которого вы иметь дать им пароли. Пытаетесь ли вы запутать пароли или нет - ваше дело, но вы все равно даете им пароли.

Я бы использовал что-то вроде BATCH2EXE и «скомпилирую» командный файл, чтобы они не могли его изменить. :-)

Их там несколько. Некоторые бесплатные, некоторые немного стоят.

Поищите в Google "batch2exe" или "bat2exe", и вы поймете, что я имею в виду.

Я использовал разные на протяжении многих лет.

Не могли бы вы указать пароль в качестве параметра командного файла? Что-то вроде C: \ MyBatchFile.bat MyPassword? Затем в пакетном файле используйте% 1 там, где требуется пароль.

Затем вы должны добавить параметр пароля как часть вызова в планировщике задач. Теперь все файлы bat могут быть открыты, не раскрывая никаких секретов. тогда вам просто нужно защитить планировщик задач, что может быть проще, а может и нет.

Не то, чтобы я знал об этом, и «компиляция» командного файла не помешает определенному человеку от обратного проектирования полученного исполняемого файла и получения пароля.

Я бы посмотрел на использование ACL в NTFS, чтобы справиться с этим.

В большинстве случаев мы не храним пароли в пакетных или конфигурационных файлах. Если нам это действительно нужно, мы используем для этого какой-то механизм шифрования. За расшифровку отвечает программа, использующая этот параметр. Если это программа, написанная вами, возможно, вы можете использовать этот подход. :)

Предполагая, что пользователи, которым вы не хотите видеть пароль, также не имеют данных для входа в систему для учетной записи, в которой запущены пакетные файлы, и у них нет достаточных прав для доступа к профилю этой учетной записи, вы можете создать переменные среды в этом профиле и используйте эти переменные в пакетных файлах вместо самих паролей. Этот метод надежен, но не интеллектуален. То есть никого, кто хоть немного поработал, не остановит ни тот, ни другой метод.

Что касается компиляции командных файлов, то около десяти лет назад это было чем-то вроде увлечения. Немногие до сих пор это делают, потому что в этом нет никакого смысла. Для каждого компилятора вы сможете найти декомпилятор. Также обратите внимание на комментарии Эвана по поводу обфускации.

Как уже упоминалось, никогда не рекомендуется иметь читаемый пароль в пакете или файле сценария, тем более что некоторые языки сценариев позволяют выполнять сценарии с веб-сайта. Лучший способ сделать это - передать пароль в качестве параметра. Вот что я делаю со своими скриптами битерскриптинга ( http://www.biterscripting.com ).

Ниже приведен пример сценария.

# Script sample.txt
# Input argument - login, password
var string login, password

somecommand $login $password

Я вызываю этот сценарий, используя следующую запись в диспетчере задач.

"C:\biterScripting\biterScripting.exe" "sample.txt login("mylogin") password("mypassword")

Вы можете использовать тот же подход, когда посетители выполняют ваши скрипты как часть вашего веб-сервера.

Патрик

В пакетном файле вы можете указать «NET SEND», чтобы отправлять себе сообщение, когда кто-то запускает файл.

Кроме того, вы можете выполнить скрипт для проверки принадлежности пользователя к определенной группе, а если нет, выйти из скрипта.

Быстрый и простой способ обфускации командных файлов - это добавить строку «FF FE 0D 0A» в начало шестнадцатеричного кода (используйте бесплатный шестнадцатеричный редактор). Часто используется авторами вредоносных программ, он обманом заставляет программы редактирования текста, такие как Notepad или Notepad ++, открывать файл, как если бы это был Unicode (когда это фактически ASCII), что приводит к искажению нежелательного текста. Однако, если командный файл запущен, он будет обработан cmd.exe, а не notepad.exe, таким образом запуская запутанный код (Windows cmd будет читать все как ASCII).

Это не остановит никого, кто ДЕЙСТВИТЕЛЬНО хочет увидеть, что происходит под капотом, но остановит любого, кто не слишком разбирается в обратном инжиниринге. Надеюсь это поможет.