의미없는 블로그
Part 04. 침해사고 분석 및 대응 - snort, iptables 본문
<Snort> p.453
alert tcp any any -> any 1:2023 ... (1~2023 포트)
alert tcp any any <> any 1024: ... (2024 포트 이상)
alert : alert 발생, 로그 남김
log : 로그 남김
pass : 패킷 무시
drop : 패킷 차단, 로그 남김
sdrop(silent) : 패킷 차단, 로그 안남김
reject : 패킷 차단, 로그 남김, TCP면 TCP Reset 전송, UDP면 ICMP Unreachable 전송
activate : alert 발생, dynamic rule 활성화
dynamic : 로그 남김
$EXTERNAL_NET : 외부 네트워크를 의미, 기본 any
$HOME_NET : 내부 네트워크를 의미
-> snort.conf 에 적절한 대역 설정하면 된다
이러한 룰들은 local.rules 에 작성한다
msg: 이벤트 이름
flow: 활성화 조건
- established; TCP 연결 수립일 때
- stateless; 상태와 상관없이 규칙 활성화, 얘는 flow: stateless; 아니고 그냥 stateless; 로 쓴다
- to_server; 서버로 가는 패킷일 때
- from_server; 서버에서 온 패킷일 때
- to_client; 클라이언트로 가는 패킷일 때
- from_client; 클라이언트에서 온 패킷일 때
- only_stream; 재구성된 패킷, 연결이 맺어진 스트림에 속한 패킷일 때 (뭔소리?)
- no_stream; only_stream 의 반대
content: 탐지할 내용
- "/etc/passwd"; 이 문자열 탐지
- !"/etc/passwd"; 이 문자열 안탐지
- nocase; 소문자 구분 없이
- "|2f6574632f706173737764|"; 바이너리로도 가능
- "|2f6574632f|passwd"; 바이너리랑 텍스트도 가능
- "\"pentest\""; 특수문자 탐지할때는 \ 붙임
offset:2; depth:3; 3번째부터 3개에
distance:6; within3; 7번째부터 3개에 (이전 패턴 매칭 후)
http_method; GET/POST
http_uri; /index.php
http_header; User-Agent: Mozilla/5.0
http_cookie; Cookie: craft_uid=6367fa21077a2a0b1575d7bec4ef7288
http_client_body; 요청값의 body 부분에서 확인 (POST 요청에서)
http_stat_code : 200 OK
http_stat_msg : 200 OK
flag:
- S; SYN
- A; ACK
- F; FIN
- R; RST
- P; PSH
- U; URG
- 0; NULL
flag:SF; SYN, FIN 플래그만flag:SF+; SYN, FIN 플래그에 다른것 추가flag:SF*; SYN 또는 FIN에다가 다른것 추가flag:!SF; SYN, FIN을 포함하지 않는
reference: cve-2019-xxxx; 외부 취약점 참조 시
classtype : 공격 유형 분류, 우선순위로 쓸 수도 있고
priority : 룰의 우선순위, classtype 우선순위 덮어쓴다
sid : 99 이하는 시스템에 예약된 것, 100~백만 이하는 snort 에서 제공하는 룰셋, 백만 이상은 사용자가 지정
rev : 룰의 버전번호, 수정 횟수
잡힌 로그를 보면.. 로그는 snort.log 에 남는다
tcpdump -r snort.log 로 본다
1) sid
2) rev
3) msg
4) classtype
5) priority
6) 탐지한 내용
7) reference : 알아서 관련 URL 링크 제공해주나 보다
alert tcp any any -> any any (logto:test; ....
해당 규칙의 로그를 test 에 저장
pcre 표현식
\ 특수문자 표현
^ 시작을 알림
$ 끝을 알림
. 임의의 문자 한개
[a-z] 괄호 내 문자 한개
[^0-9] 괄호 내 문자 제외하고 한개
| 또는 조건
* 바로 앞에 문자가 0번 이상
+ 바로 앞에 문자가 1번 이상
? 바로 앞에 문자가 0 또는 1번
{x} 바로 앞에 문자가 x번
{x,} 바로 앞에 문자가 x번 이상
{x,y} 바로 앞에 문자가 x번 이상 y번 이하
pcre:"/^(GET|POST)/";
GET 또는 POST 로 시작하는 문자열
tcp any any -> any any PCRE(/^POST.*Content\x2dLength\x2a\x20evilstring)
문제 : Rule에는 HTTP 프로토콜에 대한 정규식(POST, Content-Length가 포함)이지만 모든 포트 any로 설정되어 있어 HTTP서비스가 아닌 불필요한 트래픽에 대해서도 감시를 수행함. 시스템에 오버헤드 유발
해결방안 : tcp any any -> 웹서버IP 80 으로 바꾸어 시스템 부하를 감소
threshold 는 로그 발생량을 조절하는
threshold type limit, track by_src, count 2, seconds 10;
출발지 IP를 기준으로(by_src) 매 10초동안 2번째 이벤트까지(limit) action을 수행한다
threshold type threshold, track by_src, count 10, seconds 5;
출발지 IP를 기준으로(by_src) 매 5초동안 10번째 이벤트마다(threshold) action을 수행한다
threshold type both, track by_dst, count 10, seconds 1;
목적지 IP를 기준으로(by_dst) 매 1초동안 10번째 이벤트 시 한번 action을 수행한다 (Only 한번)
TCP SYN Flooding 공격의 예시
[iptables] - 474p
INPUT 체인 : 방화벽으로 들어오는 경로
OUTPUT 체인 : 방화벽에서 나가는 경로
FORWARD 체인 : 방화벽을 통과하는 경로
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j LOG --log-prefix "[CONNLIMIT]"
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
-A : append, 제일 마지막에 룰을 추가
-I : insert, 첫 행에 룰을 추가 -I n 은 n 행에 룰 추가
-D : delete, 룰 삭제, -D n 은 n 행에 룰 삭제
- 룰은
-s : source IP
-d : destination IP
--sport : 출발지 포트
--dport : 도착지 포트
--icmp-type [메시지타입] : ICMP 메시지 타입
--tcp-flags [검사할 플래그] [설정되어야 할 플래그] : --tcp-flags ALL SYN,FIN 모든 플래그를 검사해서 SYN, FIN 플래그만 설정된 패킷을 탐지한다
-m state --state NEW : 최초로 들어온 패킷, TCP의 SYN 같은
-m state --state ESTABLISHED : 연결된 이후에 송수신 되는 패킷
-m state --state RELATED : 연관된 연결정보, FTP의 21/tcp, 20/tcp 같은
-m state --state INVALID : 어떤 상태에도 해당되지 않는 패킷
-m connlimit --conlimit-above 5 : 동시 연결 5개 초과 시
-j ACCEPT : 해당 패킷을 허용
-j DROP : 해당 패킷을 차단한 후 아무런 응답 메시지도 전송하지 않는다
-j REJECT : 해당 패킷을 차단한 후 ICMP 에러 메시지로 응답
-j LOG : 탐지 로그를 남긴다 /var/log/messages 에 남긴다
[FDS]
FDS 는 이상감지시스템, 이상거래감지시스템, 이상금융거래탐지시스템
책에는 없는데 필기에 나온거라서..
보안솔루션의 한 종류라고 보면 될 것 같은데
금융거래에 대한 Data를 빅데이터로 축적하고 분석해서 이상거래를 탐지하는 것 같다
Back-End 블럭에서 단말기정보, 거래내용 등을 분석하고 탐지하여 차단한다고 한다
FDS의 4가지 주요 기능
1) 이용자의 정보 및 행위에 대한 정보수집
2) 분석 및 탐지 기능 : 이상거래행위를 탐지
3) 대응기능 : 이상거래행위에 해당하는 경우 거래 차단, 추가 인증
4) 모니터링 및 감사기능
DBD p.526
<악성코드 종류> p.539
다운로더 - 다운로더 자체가 악의적이라기 보단 외부에서 추가 악성코드를 다운받는 기능
드롭퍼 - 자신 내부에서 추가 악성코드를 생성하여 드롭
인젝터 - 드롭퍼의 유형인데 자신의 데이터를 이용해 메모리에 악성코드 상주시키는
키로거 - 키보드 메시지 가로채는
백도어 - 특정 포트 열어두고 악의적인 행위 할 수 있는
트로이목마 - 일반적인 프로그램으로 가장하여 악의적인 행위 수행하는
랜섬웨어 - 파일 암호화
애드웨어 - 광고 목적으로 만들어진 악성코드
스파이웨어 - 사용자 동의없이 설치되어 행동하는 악성코드
<윈도우 레지스트리> p.543
<APT 공격> p.556
초기정찰 - 정보 수집 단계
초기침입 - 스피어 피싱, 워터링 홀, USB 등을 통한 침입
거점마련 - 백도어를 통한 공격도구 다운로드
권한상승 - 시스템 관리자로 권한상승
내부정찰 - 내부 네트워크 정보 수집
내부침투 - 내부의 다른 시스템을 공격하여 침투
지속성유지 - 레지스트리 조작, 서비스 등록, 작업 스케쥴러 등록 등 지속성 유지
목표달성 - 정보유출, 시스템 파괴 등
스피어 피싱
특정인을 표적(APT)으로 조작된 이메일 등을 보내서 악성 웹 사이트로 유도
워터링 홀
공격 대상(APT)이 주로 방문하는 웹사이트 등에 제로데이 취약점 등을 악용하여 악성코드 심기
ex) 웹사이트에 리다이렉트 코드 심고 사용자가 방문하길 기다림
<사이버 킬 체인> p.558
사이버 표적 공격을 단계별로 탐지/차단/대응하는 방어시스템
APT 공격 대응에 효과적이라고 하네
우선 단계별 공격절차가 있는데
정찰 -> 무기화 -> 전달 -> Exploit -> 설치 -> 명령 및 제어(C&C) -> 목적수행
(무기준비) (무기유포) (무기작동) (악성프로그램)
이를 방어하는 대응유형이 있는데
탐지(Detact) - 공격을 탐지하는 것
거부(Deny) - 공격자 접근을 차단하는 것
교란(Disrupt) - 공격을 위한 정보 흐름을 방해
저하(Degrade) - 공격 효과를 감소
기만(Deceive) - 정보를 조작해서 공격자가 착각하게해 공격자를 기만ㅋㅋ
억제(Contain) - 공격자 또는 공격도구를 파괴
'# 나 > pentest (WEB)' 카테고리의 다른 글
Part 02. 네트워크 - ARP, IP, ICMP, TCP, UDP, 포트스캐닝 (0) | 2019.05.13 |
---|---|
Part 02. 네트워크 - DoS, DDoS, DRDos, 무선랜, VPN, IPsec, SSL/TLS, 라우터 (0) | 2019.05.10 |
Part 03. 어플리케이션 - DNS, HTTP, FTP, SNMP, DHCP (0) | 2019.05.07 |
AD 서버 원격 명령어 테스트 (1) | 2019.04.10 |
SSRF(Server Side Request Forgery) (8) | 2019.02.12 |