본문 바로가기
AI 스쿨 리팩토링 보안직무 과정

22주차 과제 (상) - 보안관제 프로젝트 (3), Snort 환경 설정 마무리

by IT스터디큐브 2023. 8. 16.

서론

 보안관제 프로젝트를 진행합니다. 프로젝트의 목적은 악성코드의 행동을 분석하고, Snort를 이용하여 악성코드의 악성행위를 탐지하는 것 입니다.

 프로젝트는 다음과 같은 단계로 이루어집니다.


- 악성코드 샘플 선정 (완료)
- Snort를 설치하고 분석 환경을 구축 <-진행중
- 악성코드를 분석하여 악성코드의 독특한 행위 파악.
- 해당 행위를 기반으로 룰 시그니처 작성
- 룰 시그니처를 적용하고 Snort가 정상적으로 악성 행위를 감지했는지 확인.
- 위의 내용을 기반으로 보고서 작성.

 

 이번 시간에는 Snort(이하 스노트)를 환경 설정을 완료하고 악성코드 분석을 실시해 보려 합니다.

22주차 과제 - 리팩토링 프로젝트.pptx
3.59MB

 과제 발표에 사용한 PPT 파일을 첨부하겠습니다. 현재 진행하고 있는 과제는 AI 스쿨의 리팩토링 보안직무 과정의 일부입니다. 만약 해당 과정에 더 관심이 있으시다면 AI스쿨의 공식 카페에 방문하여 더많은 정보를 확인해 주시기 바랍니다.

https://cafe.naver.com/itscholar

 

정보보안전문가 취업카페 스칼라 : 네이버 카페

비전공자 전문IT교육, 정보보안전문가, 보안을 아는 개발자, AI 양성교육, IT기술리더, 창업가 양성

cafe.naver.com

본문

 지난 시간에는 스노트 설치를 완료하고 스노트가 작동하는지 시험, 성공적으로 작동하는 것을 확인할 수 있었습니다. 이번 시간에는 스노트의 환경 설정을 마무리하고 악성코드를 분석하는 시간이 될 것 입니다.

 

 스노트의 로그 파일은 2진수 파일로 저장되어 기본 파일로 분석을 진행하기에는 가독성이 좋지 않습니다. 따라서 효율적인 로그 파일 관리 및 분석을 위해서 스노트와 데이터베이스를 연동할 필요가 있습니다. 그렇기에 데이터베이스 프로그램을 설치하고, 구축하고, 스노트와 연동하고, 설정하고, 테스트 하는 과정을 갖도록 하겠습니다.

 

XAMPP

 XAMPP는 웹서버를 구축하기 위한 소프트웨어 여럿을 묶어 배포된 패키지 입니다. 학습 목적으로 웹서버를 구축하는 지금 목적에 적합한 패키지입니다. 참고로 XAMPP는 약자로 의미는 다음과 같습니다.

 

 X - 크로스 플랫폼

 A - Apachi(웹서버 프로그램)

 M - MySQL(DB 프로그램)

 P - PHP(서버 사이드 언어)

 P - Perl(인터프리터 언어)

 

 참고사항으로 현재 XAMPP의 최신 버전에서 MySQL이 MariaDB로 변경되었습니다. 스노트에 MariaDB를 연동하는 작업은 충분히 가능해 보이지만 관련 자료가 적어 시행착오를 줄이고자 구버전으로 해당 작업을 진행할 것 입니다.

 

 이번 세션에 사용한 XAMPP 구버전(1.71) 링크는 다음과 같습니다.

https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/1.7.1/

 

XAMPP - Browse /XAMPP Windows/1.7.1 at SourceForge.net

Runn is a modern resource and capacity planning platform that gets remote teams on the same page. Runn is best suited for project managers, operations leads, resourcing managers and other people responsible for project delivery.

sourceforge.net

 이곳에서 다운로드를 진행하신 뒤 XAMPP를 설치하면 됩니다. 

XAMPP 설치 옵션은 다음과 같이 진행하시면 됩니다.

 

BASE

 

BASE는 Basic Analysis and Security Engine의 약자입니다. 스노트에서 발생한 로그 파일이 데이터베이스에 저장될 때, 이 데이터베이스에 쉽게 접근하고 관리할 수 있는 웹 인터페이스입니다. BASE는 실습 당시 최신 버전인 1.45 버전으로 진행하였으며, 다운로드 링크는 다음과 같습니다.

 

https://sourceforge.net/projects/secureideas/

 

BASE

Download BASE for free. BASE is the Basic Analysis and Security Engine. It is based on the code from the Analysis Console for Intrusion Databases (ACID) project.

sourceforge.net

BASE 설치는 설치마법사로 진행되지 않습니다. 압축파일을 다운로드 받고 다음 경로에 압축을 해제하면 설치가 완료됩니다.

 

C:\xampp\htdocs\base

 

htdocs 폴더안에 기본적으로 base폴더가 없기 때문에 base폴더를 생성하고 해당 폴더에 압축을 해제하면 됩니다.

 

ADODB

 

ADODB는 PHP 데이터베이스 클래스 라이브러리입니다. 데이터베이스 관리와 쿼리에 사용할 수 있는 부가 기능을 제공합니다. ABODB는 실습 당시 최신버전인 5.20.12 버전을 사용했으며 다운로드 링크는 다음과 같습니다.

https://sourceforge.net/projects/adodb/files/adodb-php5-only/adodb-520-for-php5/
 

ADOdb - Browse /adodb-php5-only/adodb-520-for-php5 at SourceForge.net

ADOdb Library for PHP5 (c) 2000-2013 John Lim (jlim@natsoft.com) (c) 2014 Damien Regad, Mark Newnham and the ADOdb community Released under both BSD 3-Clause and GNU Lesser GPL library 2.1 licenses. This means you can use it in proprietary products; see Li

sourceforge.net

ADODB 역시 설치마법사가 제공되지 않으며 압축파일이 제공됩니다. 해당 압축파일을 다음 경로에 압축해제 하면 됩니다.

C:\xampp\htdocs\adodb5

 

마찬가지로 htdocs 폴더 안에 adodb5폴더가 없기 때문에 새로 생성하고 해당 폴더에 압축 해제를 하면 됩니다.

 

Snort DB 연동하기

 

 스노트의 환경 구성에 필요한 프로그램들이 모두 설치되었습니다. 이제 스노트와 데이터베이스를 연동하고 스노트가 잘 작동하는 지 확인할 것 입니다.

 먼저 스노트의 설정 파일을 추가로 수정해야 합니다. Snort.conf 파일을 열고 다음 부분을 수정해주시기 바랍니다.

 

-var HOME_NET any 부분 수정
현재 가상 환경이 사용중인 네트워크 대역으로 수정

-#database 부분 추가
output database: alert, mysql, user=root password=apmsetup dbname=snort host=localhost
output database: log, mysql, user=root password=apmsetup dbname=snort host=localhost

 

 그 다음으로 MySQL입니다. MySQL은 초기비밀번호가 설정되지 않은 상태로 설치되기 때문에 원활한 실습 진행을 위해서 초기 비밀번호를 설정할 것 입니다. 명령 프롬프트를 관리자 권한으로 실행한 뒤 다음 명령어를 차례로 입력해 주시기 바랍니다.

 

cd C:\xampp\mysql\bin
  (MySQL 파일 위치로 이동한다.)
mysql -u root -p mysql
  (비밀번호를 입력하라는 창이 나타날 것. 공란으로 비워두고 엔터를 치면 접속된다.)
update user set password = password(‘apmsetup') where user = 'root';
  (비밀번호를 설정하는 명령어. 만약 apmsetup이 아닌 다른 비밀번호를 사용하고자 한다면 해당 부분을 수정할 것.)
flush privileges;
  (권한 테이블 업데이트)
quit
  (접속 종료)

 

 이제 Snort DB를 생성할 것 입니다. MySQL을 사용하여 데이터베이스를 생성하고 Schemas 파일을 적용합니다. 참고로 Schemas 파일이란 DB의 구조를 서술한 파일입니다.

 

 우선 작업 편의성을 위하여 스노트 폴더 안에 있는 Schemas 파일(create_mysql)을 MySQL 폴더 내에 복사합니다.

 Schemas 파일 원본 위치 -> C:\Snort\schemas

 Schemas 파일 목적지 위치 -> C:\xampp\mysql\bin

 

 해당 작업 이후, 명령 프롬프트를 실행하고 다음 명령어를 차례대로 입력합니다.

cd C:\xampp\mysql\bin
  (MySQL 파일 위치로 이동한다.)
mysqladmin -u root -p create snort
  (Snort DB를 생성한다.)
mysql -D snort -u root -p < create_mysql
  (Snort DB에 MySQL용 schemas 파일을 적용한다.)
mysql -u root –p
  (mysql 콘솔에 로그인한다)
use snort;
  (Snort DB에 접근한다.)
show tables;
  (Snort DB의 테이블을 출력한다.)

이후 테이블이 정상적으로 출력되었는지 확인합니다.

 

 

마지막으로 BASE의 설정을 하겠습니다. BASE에 접속하기 전에 먼저 BASE의 설정 파일을 수정해야 합니다. BASE의 설정파일은 다음 경로로 접근합니다.

 

C:\xampp\htdocs\base\include\base_action.inc.php

 

29행과 30행에 있는 구문에 주석처리를 합니다. 이후 저장합니다.

 

이제 BASE에 접속할 것 입니다. 인터넷 브라우저를 열고 다음 주소에 접속합니다.

 

http://localhost/base

 

이런 창이 나타날탠데, Continue를 눌러 BASE 설정을 하면 됩니다.

언어는 영어로 설정하고, ADODB를 설치한 경로를 찾아 입력합니다. Continue를 눌러 진행합니다.

사용할 데이터베이스는 MySQL이고 그 아래에 DB이름과 호스트 이름, 사용자 이름과 비밀번호를 설정하시면 됩니다. 포트설정은 기본설정대로 사용할 것이기 때문에 공란으로 두고 아래에 있는 아카이브 설정은 사용하지 않을 것이기 때문에 공란으로 둡니다. 그리고 Continue를 눌러 진행합니다.

이제 로그인 정보를 생성할 것 입니다. 사용할 아이디와 패스워드, 사용자 이름 등을 설정하고 Continue를 눌러 진행합니다.

 Create BASE AG를 클릭하여 테이블을 생성하면 설정을 거진 완료되었습니다. 다음 단계로 진행하여 3단계에서 만든 로그인 정보로 로그인을 하게 된다면 BASE의 사용준비가 끝납니다.

설정이 완료된 BASE의 화면

 

 

이제 모든 환경 설정이 끝났습니다. 이제 환경설정이 올바르게 되었는지 Ping 테스트를 진행할 것 입니다. Ping 테스트는 다음과 같은 구조로 이루어집니다.

 

 스노트의 룰 파일을 수정하여 모든 ICMP 메세지를 감지하도록 설정

 같은 네트워크에 있는 다른 가상 머신을 이용하여 Ping 메세지 입력

 Ping 메세지는 ICMP의 일종이니 스노트가 해당 메세지를 감지하고 로그를 남김

 로그파일이 데이터베이스에 연동되고, 이를 BASE 화면에서 확인

 

가장 먼저 스노트의 룰 파일을 수정할 것 입니다. 

alert icmp any any -> any any (msg:”ICMP_TEST”; sid:1000001;)

 

 

이제 스노트를 작동시킵니다. 명령 프롬프트를 실행하고 다음 명령어를 입력합니다.

cd c:\snort\bin
snort.exe -W
snort.exe -c c:\snort\etc\snort.conf -l c:\snort\log -i 1

스노트가 실시간 감시를 시작한 모습입니다.

 

다음으로 같은 네트워크 대역에 있는 다른 가상머신으로 진입합니다.

Server 머신에 스노트 환경이 구성되었고 Victim 머신에서 Server를 향하여 Ping 메세지를 날릴 예정입니다.

Victim 머신에서 Ping을 보내는 모습

이제 BASE 인터페이스에 접근하여 메세지가 감지되었는지 확인합니다.

 

성공입니다. ICMP 메세지를 확인할 수 있었습니다.

 

이번주차 과제는 길어져 분할 업로드를 하게 되었습니다. (하)편에서 계속 진행하도록 하겠습니다.

댓글