보안관제 프로젝트를 시작해보려고 합니다.
이번 프로젝트의 목적은 악성코드 행위를 분석하고 Snort를 이용하여 탐지하는 것 입니다.
환경구성 먼저 해보겠습니다.
CONTENTS
1. 가상환경 두개 구성
![](https://velog.velcdn.com/images/pingu_9/post/d9cdf999-618a-449b-a2e7-f8fd83779b1f/image.png)
1.2 네트워크 연결
![](https://velog.velcdn.com/images/pingu_9/post/111fa4d5-2d0a-492a-9967-a451ec5810ea/image.png)
- Client와 server의 ip주소 확인
![](https://velog.velcdn.com/images/pingu_9/post/4a8b8f57-d8d7-4371-84f2-30d2d0851cdb/image.png)
- 네트워크 연결 확인
2.1 라이브러리 설치
![](https://velog.velcdn.com/images/pingu_9/post/11c990a6-8b5e-4a6b-a68f-0685661ebf90/image.png)
- Snort를 설치하기 전에 실제 네트워크로 전송되는 패킷을 탐지하기 위해 Pcap 라이브러리가 필요합니다.
2.2 Snort 설치
![](https://velog.velcdn.com/images/pingu_9/post/8df12123-c4b5-4b35-ac68-2ea1613bea61/image.png)
- 3 버젼은 리눅스 전용이며, 윈도우에서는 2.9.20이 최신 버전임
- 최신버전은 안정적이지 않으며, 오류가 많음
- 2.9.2.3은 안정적이며 자체적으로 스키마 파일을 제공해주는 가장 마지막 버전
2.3 Xampp 설치
![](https://velog.velcdn.com/images/pingu_9/post/819c155f-3cf6-4145-8619-1b2bc6679fe9/image.png)
![](https://velog.velcdn.com/images/pingu_9/post/2b27652c-98ec-40dc-838d-9100a4ab2c0e/image.png)
![](https://velog.velcdn.com/images/pingu_9/post/aa93aa78-b623-48ec-bbe0-3c3a9a76234f/image.png)
- Apache Web Server, MySQL, PHP를 사용할 수 있는 프로그램을 단기간에 빠르게 설치 가능하게함.
- Snort 로그 파일이 2진수 형태로 저장되기에 분석하는데 힘듦으로 Snort를 DB와 연동시켜 좀 더 쉽게 분석하기 위함
- xampp 최신버전은 mariadb를 지원 -> mariadb로 snort 환경 구성 해보려했지만 정보가 많이 없어 mysql인 1.7.1 버전을 선택
2.4 ADOdb 설치
![](https://velog.velcdn.com/images/pingu_9/post/8422f226-0dfb-4dbf-8c9e-1ca0596c5f39/image.png)
- PHP 데이터베이스 클래스 라이브러리로 데이터베이스 관리를 위한 기능을 제공하는 파일
![](https://velog.velcdn.com/images/pingu_9/post/f297237b-5cce-4607-a90a-a1226666787d/image.png)
- 파일 다운로드
- 파일 압축해제
- C:\xampp\htdocs\adodb5 경로에 압축을 푼 파일을 모두 저장
2.5 Base 설치
![](https://velog.velcdn.com/images/pingu_9/post/0fa941e0-7a17-4b02-bff5-9b9d0d05da24/image.png)
- Snort 시스템 탐지 로그를 분석하는데 웹 프로트 엔드를 제공해주는 파일
![](https://velog.velcdn.com/images/pingu_9/post/686dd08e-7fe2-49fd-9748-73121be053b9/image.png)
- C:\xampp\htdocs\adodb5 경로에 압축을 푼 파일을 모두 저장
- 그러면 base 프로그램이 adodb5 라이브러리를 이용하여 snort db에 접근한 뒤, 저장된 탐지로그를 불러와서 웹 프론트엔드상에 집계를 해줌
2.6 Notepad++ 설치
![](https://velog.velcdn.com/images/pingu_9/post/e4d56b34-9cfe-4074-b3d0-4ad826ec1e60/image.png)
- Notepad++가 있어야 snort.conf 수정이라든가 snort.rule 생성등을 할 수가 있음
- 메모장으로 열면 해당 파일이 깨짐
3.1 MySQL 비밀번호 설정
![](https://velog.velcdn.com/images/pingu_9/post/cc63449a-1c18-47fa-b799-d3d1aae1ab8f/image.png)
- XAMPP 설치 후 MySQL 초기 비밀번호가 설정이 되어있지 않기 때문에 아래 명령어를 입력해 비밀번호를 설정합니다.
- cd C:\xampp\mysql\bin
- mysql -u root -p mysql
- update user set password = password(’원하는 비밀번호') where user = 'root';
- flush privileges;
- quit 또는 Ctrl + C
3.2 Snort DB 생성 후 MySQL 스키마 생성
![](https://velog.velcdn.com/images/pingu_9/post/15ce200d-a920-432a-8777-2e7a3ac972ce/image.png)
- C:\snort\schema 경로에 create_mysql 파일을 C:\xampp\mysql\bin 폴더에 복사
![](https://velog.velcdn.com/images/pingu_9/post/81ef3a99-e7d5-4fc8-84cc-77d2162eabb1/image.png)
-
cd c:\xampp\mysql\bin
-
mysqladmin -u root -p create snort
-> Snort DB 생성
-
mysql -D snort -u root -p < create_mysql
->mysql 전용 스키마 적용
-
mysql -u root -p 입력 후 비밀번호 입력
->mysql 콘솔 로그인
-
use snort;
->snort DB 접근
-
show tables;
->snort DB의 테이블 출력
3.3 Base 설정
![](https://velog.velcdn.com/images/pingu_9/post/779a11e4-878b-402c-a36b-e899e5a38d93/image.png)
- c:\xampp\htdocs\base\includes 경로에 존재하는 base_action.inc.php 파일을 Notepad++을 통해 실행한다.
- 29~30줄 주석처리
![](https://velog.velcdn.com/images/pingu_9/post/859543a4-5997-46b5-bb2a-84f7a3512e03/image.png)
- "http://localhost/base" 웹 사이트에 접속 후 Continue 버튼을 눌러 Base 설정을 시작한다.
- Path to ADODB에 “C:\xampp\htdocs\adodb5” 입력 후 Continue 버튼을 누른다.
![](https://velog.velcdn.com/images/pingu_9/post/fa99cbbc-64e3-409c-804e-47e79244c729/image.png)
- Pick a Database(사용할 DB 설정)에 'MySQL' 입력 후, Continue 버튼을 누른다.
![](https://velog.velcdn.com/images/pingu_9/post/de91fdb7-d510-46d4-8228-6dd2f9491009/image.png)
- 체크박스 활성화 후 원하는 로그인 정보를 생성한 후 Continue 버튼을 누른다.
![](https://velog.velcdn.com/images/pingu_9/post/129e70bb-3c2c-44a1-a651-0b145cbf1b69/image.png)
- "Create Base AG" 클릭 시 사전에 한 Table 등록으로 인해서
Status에 "Done Succesfully created user" 표시로 Base 설정이 완료된 것을 확인할 수 있다.
3.4 Snort.conf 파일 수정
![](https://velog.velcdn.com/images/pingu_9/post/399151d6-8ac7-4c88-a899-e7229184b876/image.png)
- C:\Snort\etc\ 경로에서 snort.conf 파일을 Notepad++을 통해 열고,
Ctrl+F 후 ipvar, portvar 두 가지 키워드를 'var'로 모두 바꾸어 준다.
![](https://velog.velcdn.com/images/pingu_9/post/740c5f1d-c0d7-4a49-9db9-8e769df58a2a/image.png)
- 리눅스 형식 경로로 설정되어 있는 104~106, 113~114, 247, 250, 253 라인을
모두 윈도우 형식의 경로로 변경해 준다.
![](https://velog.velcdn.com/images/pingu_9/post/9446fec7-43da-4411-9bb9-2735cd0856b5/image.png)
- 265 ~ 269 라인은 IDS 모드에서 사용할 수 없으므로 주석 처리를 해준다.
- 510, 511번 라인 또한 윈도우 형식으로 변경
![](https://velog.velcdn.com/images/pingu_9/post/6049b2f5-53dc-4239-8571-279a9ddf9947/image.png)
- C:\snort\rules 경로에 이름에 맞게 빈 rules 파일을 생성한다.
![](https://velog.velcdn.com/images/pingu_9/post/951cfd32-3357-4ee1-9de4-2a8fbac134b5/image.png)
- 535~536번째 줄에 본인 DB정보를 입력
![](https://velog.velcdn.com/images/pingu_9/post/741277ff-ae47-40d8-9531-4d28227e7d81/image.png)
- 541, 542번 라인은 사진과 같이 수정
![](https://velog.velcdn.com/images/pingu_9/post/98043212-16a4-4a1d-a5dd-b87add6bd3f0/image.png)
- C:\Snort\rules 경로에 사용하고자 하는 rules 파일 생성 후, 554번 줄에 해당 룰 파일로 경로를 수정한다.
![](https://velog.velcdn.com/images/pingu_9/post/466602d3-a3c4-4e12-b66b-5f6b5715aa78/image.png)
- 사용할 룰파일명을 열어서 테스트 룰을 입력
![](https://velog.velcdn.com/images/pingu_9/post/8f7cc41a-4bfd-46f9-b803-8affdacf4c76/image.png)
- 파일 위치로 이동 -> cd C:\Snort\bin
- NIC 번호 확인 명령어를 입력 -> snort.exe –W
![](https://velog.velcdn.com/images/pingu_9/post/59217a6f-44c4-4ad4-8d1d-c94c034f141d/image.png)
- Snort.conf 오류 확인
- Snort.exe –T –c c:\snort\etc\snort.conf –l c:\snort\log –i1 입력
- Snort successfully validated... 가 떳다면 성공적으로 구축 완료.
![](https://velog.velcdn.com/images/pingu_9/post/78810ae8-5ed4-46ea-84fe-a0b5589a08d0/image.png)
- 위와 같은 화면이 나온다면 정상적으로 작동 된 것
![](https://velog.velcdn.com/images/pingu_9/post/b7e02047-7326-4aad-9bb9-84dcd0261419/image.png)
- 다른 가상환경에서 ping을 보내 정상적으로 보내지는지 확인
![](https://velog.velcdn.com/images/pingu_9/post/e50e9da0-3c7b-4ee7-bfc7-0ac21c9a5f59/image.png)
- 정상적으로 ICMP 패킷이 탐지가 되는 것을 확인