=========================================================
[action] [protocol] [src_ip] [src_port] -> [Dst_ip] [Dst_port] [option]
액션 action : alert , pass ,drop , reject ,log
프로토콜 protocol : TCP,UDP , IP , ICMP
출발지IP Src_ip : any , 10.10.10.10 , 10.10.10.0/24 !
출발지port src_port : any , 22, 80 ,...... ! , : (1:1000)
패킷흐름방향 -> : -> , <>
도착지IP Dst_ip : any , 10.10.10.10 , 10.10.10.0/24
도착지port Dst_port : any , 22, 80 ,......
침입탐지옵션 option : msg ,content ,flow , rev......
=========================================================
**msg : 메세지 내용 출력
**sid : 규칙 식별자
rev : 규칙 수정버전
classtype : 유형별 정의
priority : 우선순위
reference : url 로 정책 정의\
=========================================================
검증방법 :
alert icmp 10.10.10.10 any -> any any (msg:"ICMP_REQUEST"; itype:8; sid:50001;)
alert icmp 10.10.10.10 any -> any any (msg:"REPLY_ICMP"; itype:0; sid:50002;)
snort -i ens33 -c /etc/snort/rules/local.rules
tail -f /etc/snort/rules/alert
옵션재료 ( <> 양방향 -> 단방향 <-
content: 글자를 잡아낸다 ex) content:"sevas";
msg: 로그 코멘트 문자를 남긴다. ex) msg:"메롱";
nocase : 대소문자를 구분하지 않는다 ex) nocase;
sid: 정책 순서를 정한다 ex) dis:50005;
)
10.10.10.10 서버
nc -l 8080
20.20.20.20 서버
nc 10.10.10.10 8080
==> 문장 이나 단어 쓰고 확인하기
cd /etc/snort/rules
vi local.rules
==> 에 룰 작성 해서 확인
1) 20.20.20.20에서 nc 10.10.10.10 8080 으로 접속
2) 10.10.10.10에서 nc -l 8080 으로 Listen
3) 20.20.20.20에서 10.10.10.10으로 보내는 메세지 Test를 잡아내기
( 대소문자구분 ) sid:50003;
==>
alert tcp 20.20.20.20 any -> 10.10.10.10 8080 ( msg:"Test message"; content:"Test"; sid:50003; )
4) Test 를 Hex로 잡아주세요 ( content:"| 숫자 |" sid:50004; )
==>
alert tcp 20.20.20.20 any -> 10.10.10.10 8080 ( msg:"Test message(Hex)"; content:"|54 65 73 74|"; sid:50004; )
5) test를 대소문자 상관없이 잡아줄것 ( msg:"NC contest nocase"; sid:50005; )
==>
alert tcp 20.20.20.20 any -> 10.10.10.10 8080 ( msg:"Test message(nocase)"; content:"|54 65 73 74|"; nocase; sid:50005; )
6) 웹에서 서버 게시판에 xss 공격하는 내용을 와이어샤크에서 찾아내고 탐지 후 로그를 남기세요
(sid:50006;) http
<script> alert("쿠키:"+document.cookie)</script>
==>
alert tcp any any -> 10.10.10.10 [80,443] ( msg:"XSS attack(http)"; content:"|25 33 43 73 63 72 69 70 74|"; sid:50006; )
7) 웹에서 서버 게시판에 xss 공격하는 내용을 와이어샤크에서 찾아네고 탐지 후 로그를 남기세요
(sid:50007;)
<script> alert("쿠키:"+document.cookie)</script>
==>
alert tcp 10.10.10.10 any -> 20.20.20.20 3306 (msg:"XSS attack!!"; content:"<script>"; nocase; sid:50007;)
=========================================================
** 페이로드 **
*content 패킷내에 문자열 바이트를 읽어냄 (아스키 코드 읽어냄)
**nocase : 대소문자 구별 X
offset => 매칭 시작 문자열 위치 0으로 설정시 1부터 검색
depth => 문자열 범위를 지정 0으로 설정시 1부터 검색
distance 옵션 값이후 탐색 위치 지정
within 옵션값 이후 탐색 범위 지정
pcre 문자열 ( URL검사)
offeset 매칭 시작 문자열 0으로 설정시 1부터 검색
depth 문자열 범위를 지정
ex) content "123"; offset :4; depth:7 sid:50010
123 문자가 들어간 내용을 5바이트부터 7바이트만큼 확인
alert tcp 20.20.20.20 any -> 10.10.10.10 8080 (msg:"offset"; content:"123"; offset:4; depth:7; sid:50010;)
123456789 (X)
000012345677 (O)
777771237777 (O)
777777123777 (O)
11111 2222212 33333 (x)
distance 옵션 값 이후 탐색 위치 지정
ex) content:"abc" ; content"test"; distance:10;
abc이후 10바이트 뒤에 test를 찾아라
==>
alert tcp 20.20.20.20 any -> 10.10.10.10 8080 ( msg:"Contents Distance"; content:"abc"; content:"test"; distance:10; sid:50011; )
within 옶션값 이후 탐색 범위 지정
ex) content:"abc" ; content"test"; within:10;
abc 탐색 이후 부터 10바이트 이내에 test를 찾아라
==>
alert tcp 20.20.20.20 any -> 10.10.10.10 8080 ( msg:"Contents within"; content:"abc"; content:"test"; within:10; sid:50012; )
=========================================================
실습문제 sid 50013 으로 해서
10.10.10.10에 telnet 으로 접속시
접속 성공시 Telnet OK
실패시 Telnet Fail 출력
10.10.10.10
20.20.20.20
==> 둘다 telnet.socket 설치하기
alert tcp 10.10.10.10 23 -> any any ( msg:"telnet OK"; content:"last login"; nocase; sid:50013; )
alert tcp 10.10.10.10 23 -> any any ( msg:"telnet FAIL"; content:"Login incorrect"; nocase; sid:50014; )
==> 확인하는 방법
==> 20.20.20.20 에서 telnet 10.10.10.10 으로 접속하기
==> 성공, 실패 확인하기
'보안 국비 용 > 보안 10월' 카테고리의 다른 글
보안 과정 형 평가 71일차 (2024.11.12) (0) | 2024.11.12 |
---|---|
보안 과정 형 평가 63일차 (2024.10.31) (0) | 2024.10.31 |