주의사항
설치할 툴인 BASE, XAMPP, ADODB간의 PHP버전 호환성 때문에 오류가 발생할 가능성이 있습니다. BASE PHP버전과 호환되는 XAMPP, ADODB 버전을 설치하시기를 권장드립니다.
(필자의 환경 구성에서 BASE는 SourceForge에서의 최신 버전인 2013/06/03 업데이트 버전을 사용하였고 XAMPP 1.7.1 win32, ADOdb 5.20 버전을 사용했습니다.)
가상 환경 생성
VMWare에서 Snort 환경을 구성할 Server와 악성코드 행위 분석용 Client를 생성했습니다.
Snort 설치
버전 3.0부터는 리눅스만 지원하기 때문에 2번대의 버전을 사용했습니다.
그리고 MySQL에 사용할 스키마를 지원하는 마지막 버전인 2.9.2.3을 설치했습니다. 파일은 공식 홈페이지에서 구할 수 없으니 따로 찾아보셔야 합니다.
WinPcap 설치
Snort가 사용할 네트워크 인터페이스 라이브러리인 WinPcap을 설치해줍니다. www.winpcap.org에 에 접속하여 최신 버전을 다운받으면 됩니다.
XAMPP 설치
통합 개발 환경 도구인 XAMPP를 설치합니다.
XAMPP는 MySQL, PHP, Apache 등의 분석에 필요한 도구를 한 번에 설치하고 이용할 수 있으므로 작업 시간 단축에 도움이 됩니다.
설치한 후 XAMPP Control Panel을 실행시킨 모습입니다.
BASE(Basic Analysis and Security Engine) 설치
Base는 Snort IDS에서 발생한 알림을 웹 인터페이스로 확인하고 분석할 수 있도록 해주는 도구입니다.
다운로드하여 해당 파일을 압축해제 해줍니다.
압축 해제한 파일을 C:\xampp\htdocs\base 경로에 저장해줍니다.
ADOdb(Active Data Ojects for PHP) 설치
ADOdb를 설치해줍니다. ADOdb는 PHP용 DB 추상화 라이브러리로 BASE에서 Snort 로그를 DB에서 읽어오기 위해 사용합니다.
BASE 설치 때와 마찬가지로 다운받은 파일을 압축해제하여 C:\xampp\htdocs 경로에 이동시킵니다.
Notepad++ 설치
snort.conf, *.rules 파일을 편집하기 위해 사용할 텍스트 에디터입니다.
VSCode를 사용해도되지만 가상 환경이기에 조금 더 가벼운 Nodepad++를 설치했습니다.
MySQL 설정
MYSQL 비밀번호 설정
cmd를 통해 아래의 명령어를 입력하여 비밀번호를 변경합니다.
- cd C:\xampp\mysql\bin
- MySQL이 설치된 경로로 이동
- mysql -u root -p mysql
- mysql 서버에 root 사용자로 접속(초기 비밀번호는 없으므로 엔터치시면 접속 가능합니다.)
- UPDATE user SET password = password('사용할 비밀번호') WHERE user = 'root';
- root 사용자 비밀번호 변경(과거 mysql 버전을 설치했으므로 최신 명령어를 사용하시면 동작하지 않을 수 있습니다.)
- flush privileges;
- MySQL 캐시 지우기
MySQL 테이블 생성
- C:\snort\schemas에 있는 create_mysql파일을 찾습니다.
- 해당 파일을 C:\xampp\mysql\bin으로 이동시킵니다.
- cmd를 켜서 아래의 명령어를 입력합니다.
- cd C:\xampp\mysql\bin
- 경로 이동
- mysqladmin -u root -p create snort
- root 계정에 Snort DB 생성
- mysql -D snort -u root -p < create_mysql
- snort 스키마를 이용해서 Snort DB에 테이블 생성
테이블 생성 확인
- mysql -u -root -p
- mysql 콘솔 로그인(아까 설정한 비밀번호 입력)
- use snort;
- snort DB 접속
- show tables;
- 테이블 목록 확인
사진에 보이는 16개의 테이블이 보인다면 성공적으로 테이블을 생성한 것입니다.
BASE 설정
C:\xampp\htdocs\base\includes 경로의 base_action_inc.php파일을 Notepad++로 엽니다.
결과를 메일로 알려주는 기능인 29, 30번 라인을 주석처리 합니다.
받을 메일이 없기 때문에 해당 라인이 활성화되면 오류가 발생합니다.
http://localhost/base에 접속합니다. 만약 Not Found Error가 발생할 경우 C:\xampp\htdocs에 있는 base파일의 이름이 base인지 확인해보세요.
또한 xampp에서 Apache와 MySQL이 실행중이어야 합니다.
초기 화면에서 continue를 눌러 Step1으로 이동합니다.
Step1
언어는 영어, Path to ADODB는 C:\xampp\htdocs\adodb5로 설정합니다.
Step2
- Pick Database type: MySQL 선택
- Database Name: snort
- 아까 생성했던 MySQL의 DB명 snort 입력
- Database Host: localhost
- 로컬에서 DB를 사용하므로 localhost를 입력해줍니다.
- Database Port
- DB 접속 시 어떤 포트로 접속할지 입력합니다. 입력하지 않아도 됩니다. 입력을 하지 않으면 자동으로 기본 포트를 사용합니다.
- Database User Name, Password
- root, 아까 설정한 비밀번호를 입력합니다.
- Archive Database는 사용하지 않으므로 설정하지 않습니다.
Step3
- Use Authentication System: 체크
- 인증 시스템 사용 여부이므로 체크해줍니다.
- Admin User Name
- BASE에 로그인할 때 사용할 아이디를 입력해줍니다.
- Password
- BASE에 로그인할 때 사용할 비밀번호를 입력합니다.
- Full name
- BASE에서 사용할 닉네임을 입력합니다.
STEP4
Create BASE AG 버튼을 누릅니다.
DONE, Successfully created user 문구가 나온다면 MySQL에 'snort' DB에 BASE관련 테이블 생성을 성공한 것입니다.
Step5
마지막으로 아까 설정한 아이디와 비밀번호로 로그인을 시도해봅니다.
로그인이 성공하여 BASE에 성공적으로 접속한 것을 볼 수 있습니다.
Snort.conf 파일 설정
C:\Snort\tec 디렉토리에 있는 snort.conf를 Notepad++로 열어줍니다.
컨트롤 F를 눌러 바꾸기 메뉴로 들어가 ipvar를 var로 바꿔줍니다.
마찬가지로 portvar를 var로 바꿔줍니다.
104~114번 라인의 경로가 리눅스 기준의 파일 경로로 설정되있으므로 윈도우즈 운영체제에 맞게 변경해줍니다.
247~253번 라인도 마찬가지로 경로를 윈도우즈에 맞게 변경합니다.
그리고 C:\snort\lib 경로에 해당 파일이 없다면 직접 생성해줍니다.
Snort IDS 모드에서 사용할 수 없는 기능인 265~269번 라인을 주석처리 합니다.
510, 511번 라인에서 white_list.rules, black_list.rules의 경로 표시자를 /에서 \으로 바꿉니다.
또한 C:\snort\rules 경로에 위의 두 가지 .rules 파일을 생성합니다.
533, 534번 라인을 참고하여 위의 사진처럼 output database를 추가합니다.
include classification.config, include reference.config를 윈도우즈 경로 형식으로 변경합니다.
site specific rules에 가장 상단에 테스트로 사용할 룰 파일을 입력하고 하단의 모든 include 문들을 주석처리합니다.
(주석 처리는 Alt + 드래그로 일괄 편집 기능을 이용하여 편리하게 할 수 있습니다.)
그리고 위에서 입력한 파일을 C:\snort\rules 경로에 생성합니다.
Snort IDS Test
구성한 Snort 환경이 정상적으로 작동하는지 확인해보겠습니다.
C:\snort\rules 경로에 생성한 사용할 룰 파일을 Notepad++로 열어 편집합니다.
ICMP 프로토콜을 탐지하도록 설정했습니다.
cmd에서 C:\snort\bin으로 이동 후 snort.exe -W를 입력하여 네트워크 인터페이스를 확인합니다.
WinPcap을 설치했다면 리스트에 1번 index로 네트워크 인터페이스가 확인되어야 합니다.
snort.exe -T -c c:\snort\etc\snort.conf -l c:\snort\log -i 1을 입력합니다.
"Snort successfully validated the configuration!"이라는 문구가 뜨면 정상적으로 잘 진행했다는 것입니다.
snort.exe -c c:\snort\etc\snort.conf -l c:\snort\log -i 1 명령어를 입력하여 snort를 실행합니다.
- -c: snort 설정 파일 위치 지정
- -l: 로그 파일 저장 위치 지정
- -i: 모니터링 할 NIC 번호 지정(NIC: 네트워크 인터페이스 카드)
Commencing packet processing (pid=6128)이 출력되어 정상 실행된 것을 확인할 수 있습니다.
Server VM의 IP주소로 Client VM에서 ping을 보내 정상적으로 수신하는지 확인합니다.
이때 Server VM의 ICMP 수신을 허용해야 합니다.
Server VM에서 localhost/base에 접속하여 확인해보면 ICMP 패킷이 감지된 것을 확인할 수 있습니다.
'보안 > 보안관제 프로젝트' 카테고리의 다른 글
악성코드 분석(Adobe_Acrobat_msetup_aVkyy.exe) 보고서 (0) | 2025.05.12 |
---|---|
악성코드 샘플 수집 및 분석 (0) | 2025.05.12 |
Snort (0) | 2025.04.05 |