가상환경 생성
snort 환경을 구성할 Server와, 악성코드 행위 분석용 Client(Victim) 각각 가상환경을 구성하였다.
네트워크 통신을 원활히 하기 위해 방화벽을 해제하였으며,
ipconfig 명령어로 가상환경의 IP 주소를 확인한 뒤,
ping [IP주소] 명령어로 네트워크 연결을 확인하였다.
Snort 환경 구성 준비물
Snort: 네트워크 패킷 분석 및 침입 탐지 도구
WinPcap: 네트워크 패킷 캡처를 위한 라이브러리 및 드라이버
XAMPP: Apache, MySQL, PHP, Perl 등을 포함한 통합 개발 환경
Base: Snort 이벤트 데이터를 웹 인터페이스로 분석 및 표시하는 도구
ADOdb: Snort 로그 데이터를 MySQL로 저장하고 PHP로 처리하기 위한 라이브러리
Notepad++: Snort 규칙 및 구성 파일을 수정할 수 있는 코드 편집기
* (PHP는 웹사이트를 만들 때 서버에서 작동하는 프로그래밍 언어이다.
주로 데이터베이스와 연동해 동적인 웹 페이지를 생성하는 데 사용된다.)
Snort 설치
Snort 2.9.2.3 버전을 설치하였다.(3버전은 리눅스 버전이므로 주의!)
SQL과 연계 설치 여부는 추후 데이터베이스 직접 연결을 위해 "I do not plan to log to database" 옵션을 선택하였다.
설치 완료
WinPcap 설치
최신 버전인 WinPcap 4.1.3을 설치하였다.
XAMPP 설치
MySQL과 호환 가능한 버전으로 설치하였다.(최신 버전 설치 했는데 환경구성에서 호환이 안되는 경우가 생겨서 안전하게 1.7.1버전 사용을 추천!)
XAMPP Control Panel에서 Apache, MySQL 등을 통합 관리할 수 있다.
사용할 모듈들을 체크해서 실행 시켜준다.
Base 설치
Base를 설치 후 C:\xampp\htdocs\base 경로에 압축 해제하여 저장하였다.
ADOdb 설치
ADOdb를 C:\xampp\htdocs\adodb 경로에 압축 해제하여 저장하였다.
Notepad++ 설치
Snort 규칙 파일 수정 및 구성 파일 편집을 위해 설치하였다.
MySQL 비밀번호 설정
1.MySQL 경로로 이동
2.root 사용자로 접속
3.비밀번호 설정
5.MySQL 종료
MySQL 스키마 생성
스키마 파일 복사
C:\snort\schemas의 create_mysql 파일을 C:\xampp\mysql\bin으로 복사하였다.
Snort DB 생성
스키마 적용
테이블 확인
Base 설정
step0
c:\xampp\htdocs\base\includes 경로에 base_action.inc.php 파일을 notepad++를 열어준다.
메일 관련 29번, 30번 라인을 주석 처리하였다.
결과를 메일로 알려주는 29번과 30번 라인을 주석처리하여 비활성화
(받을 메일이 없기 때문에 해당 라인이 활성화되면 오류가 발생)
웹 인터페이스 설정
http://localhost/base에 접속하여 Snort DB 및 경로 정보를 설정하였다.
(XAMPP에서 Apache와 MySQL을 켜야 접속이 된다.)
step1
Pick a Language : 한국어가 없어 여어로 설정
Path to ADODB : adodb5 아까 저장해둔 C:\xampp\htdocs\adodb 경로로 설정
step2
Pick a Database type :
MySQL DB를 사용할 것이므로 MySQL 선택
Database Name : snort
이전에 명령프롬프트에서 설정한 DB명 ‘snort’
Database Host : localhost
현재 접속한 host 주소
Database Port :
DB 접속 시 어떤 포트로 접속할 것인지 결정
입력하지 않아도 무방
Database User Name, Password :
MySQL 계정 정보 입력
밑에 Archive Database는 사용하지 않을 것이므로 생략
step3
Use Authentication System : 인증 시스템 사용 여부 (체크)
Admin User Name : 로그인할 때 사용할 아이디
Password : 로그인할 때 사용할 비밀번호
Full name : base에서 사용할 닉네임
step4
‘Create BASE AG’ 버튼 클릭
'DONE'
'Successfully created user'
문구가 떴다면 성공적으로 Base 설정 완료
step5
설정을 모두 완료하고 마지막 단계 Step 5로 넘어가면 로그인 창 생성
Step 3에서 설정한 계정
Login : base_admin
Password : 비밀번호
입력하면 위에 화면이 뜨면 로그인 성공
Snort.conf 파일 설정
불필요한 라인 주석 처리
IDS 모드에서 사용하지 않는 라인을 주석 처리하였다.
rules 파일 작성
C:\snort\rules 경로에 사용 규칙 파일을 생성하였다.
MySQL 연계 설정
C:\Snort\etc\ 경로에서 snort.conf 파일을 Notepad++을 통해 열어준다.
변수 설정 변경
ipvar와 portvar를 모두 var로 변경하였다.
var: JavaScript 언어에서 ‘변수’ 설정의 역할 (C언어의 int와 비슷한 역할)
ipvar: IP 주소 또는 IP 주소의 목록/범위를 나타내는 목적으로 사용
portvar: 포트 번호 또는 포트 번호의 목록/범위를 나타내는 목적으로 사용
경로 수정
리눅스 초기 경로를 윈도우 경로인 C:\snort\ 경로로 변경하였다.
247, 250, 253번 라인의 경로도 초기 경로 설정값을 윈도우 경로로 변경 후, C:\snort\lib 경로에 접속해보면 dynamicpreprocessor파일과 dynamicengine 파일은 있지만 dynamicrulese 파일은 없기 때문에 이 파일을 직접 생성
265 ~ 269번 라인은 Snort IDS 모드에서는 사용할 수 없기 때문에
맨 앞에 # 을 입력해 주석 처리
510, 511번 라인 또한 윈도우 형식으로 변경 ( / → \ ) 후,
cmd를 통해 C:\snort\rules 경로에 해당 이름의 rules 파일 생성
MySQL연계설정
533, 534번 라인을 참고하여
output database: alert, mysql, user=root password=(비밀번호) dbname=snort host=localhost
output database: log, mysql, user=root password=(비밀번호) dbname=snort host=localhost
위 문장을 535, 536번에 이어서 작성
541, 542번 라인도 초기 경로 설정값을 윈도우 경로로 변경
(C:\snort\etc)
553번 라인에 사용할 rules 파일 입력 후, C:\Snort\rules 경로에 사용하고자 하는 rules 파일 생성
그 밑의 라인은 사용하지 않을 예정이므로 모두 주석 처리
sc.rules
Snort IDS 테스트
Snort.conf 검증
사용할 rules파일인 sc.rules파일을 열어 테스트 룰을 입력한다.
alert icmp any any -> any any (msg:"ICMP_TEST"; sid:10000001;)
이 Snort 규칙은 ICMP 프로토콜을 사용하는 모든 트래픽을 탐지하는 역할을 한다.
출발지와 목적지 IP 및 포트에 제한을 두지 않으며, 탐지된 패킷에 "ICMP_TEST"라는 메시지를 출력하고 고유 식별 번호(sid)로 10000001을 사용한다.
이 규칙은 주로 Ping 요청/응답 같은 ICMP 트래픽을 모니터링할 때 활용된다.
파일 위치로 이동 -> cd C:\Snort\bin
NIC 번호 확인 명령어를 입력 -> snort.exe –W
NIC 번호는 **네트워크 인터페이스 카드(Network Interface Card)**를 식별하는 번호이다.
한 시스템에 여러 네트워크 인터페이스가 있을 경우 Snort와 같은 도구가 모니터링할 네트워크 인터페이스를 지정하기 위해 사용한다.
snort.exe -T -c c:\snort\etc\snort.conf -l c:\snort\log -i 1
: Snort.conf 파일 검증 테스트 진행
‘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 = )’ 문구를 보아 Snort가 정상적으로 실행 완료된 것을 확인
Server 가상환경의 IP주소를 확인하고, Client(Victim) 가상환경에서 Server 환경으로 ping을 보내 정상적으로 수신하는지 확인
http://localhost/base 도메인에 접속하면 전 슬라이드에서 보낸 Ping 패킷이 대한 로그가 ICMP 프로토콜 형태로 탐지된 것을 확인할 수 있음.
이렇게 Snort 환경 설정 완료.
참고 자료
https://maker5587.tistory.com/25
https://velog.io/@secloud/17.-Snort-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1#xampp-%EC%84%A4%EC%B9%98
ppt
'Security > 보안관제' 카테고리의 다른 글
SNORT (2) | 2024.11.22 |
---|---|
악성코드 샘플 분석2 (0) | 2024.11.10 |
악성코드 샘플 분석 (0) | 2024.11.03 |
정적, 동적 Tool 실습 (4) | 2024.10.26 |
샘플 분석 환경 구성 (4) | 2024.10.12 |