BLOG
Tracefield · 02
Tracefield · 01
블로그 · 14
Vibe Audit · 04
Vibe Audit · 03
Vibe Audit · 02
Vibe Audit · 01
출판편집자 · 01
StudyTree · 01
SecurityOps · 02
SecurityOps · 01
AI챗봇 · 04
AI챗봇 · 03
AI챗봇 · 02
AI챗봇 · 01
퍼플심 · 04
퍼플심 · 03
퍼플심 · 02
퍼플심 · 01
블로그 · 13
rootscan · 07
rootscan · 06
블로그 · 12
블로그 · 11
블로그 · 10
블로그 · 09
블로그 · 08
블로그 · 07
블로그 · 06
블로그 · 05
블로그 · 04
블로그 · 03
블로그 · 02
블로그 · 01
rootscan · 05
rootscan · 04
rootscan · 03
asmspeak · 03
asmspeak · 02
rootscan · 02
asmspeak · 01
rootscan · 01
웹보안도구 · 02
웹보안도구 · 01
루트캠프 · 02
루트캠프 · 01
All notes 167
네트워크 탐지 룰
1. 실습 환경 구축
이 실습은 웹 취약점 스캔 결과를 네트워크 탐지 룰과 연결해서 보는 흐름이다. 기본 환경은 아래처럼 잡았다.
- OWASP-ZAP: 브라우저와 웹 서버 사이에서 프록시 역할을 하며, 취약점 스캔을 수행하는 도구
- MetasploitableV2: 취약한 실습용 서버
- Security Onion(16.04.x): Snort, Snorby, Squert, ELSA 등을 묶은 IDS/SIEM 실습 환경
2. 웹 스캐너 주요 기능 실습
ZAP에서는 아래 기능을 주로 사용했다.
- Update/Proxy Setting: 플러그인과 정책을 갱신하고 브라우저 프록시를 ZAP으로 맞춘다.
- Port Scan/Spider: 열린 포트와 사이트 구조를 먼저 파악한다.
- Forced Browsing: 숨겨진 디렉터리와 파일을 사전 기반으로 찾는다.
- Break: 요청과 응답을 가로채고 값을 직접 바꿔본다.
- Active Scan: SQLi, XSS 같은 취약점을 자동으로 점검한다.
- Scan Policy Manager: 스캔 강도와 검사 대상을 조절한다.
- Encode/Decode/Hash: 값 인코딩과 해시를 테스트한다.
- Report: 결과를 HTML, JSON, XML 등으로 내보낸다.
3. 취약점 진단 및 패턴 분석 실습
실습 흐름은 사이트 구조 파악, 취약점 스캔, 서버 로그 확인, 그리고 결과 비교 순서였다.
- 사이트맵 획득: Spider로 DVWA 구조를 먼저 본다.
- 취약점 진단: Active Scan으로 Path Traversal, SQLi, XSS 등 주요 항목을 점검한다.
- 로그 획득: 피해자 서버의 웹 로그를 수집한다.
- 로그 분석: 실제 요청이 서버에 어떻게 남았는지 확인한다.
- 교차 검증: ZAP 결과와 서버 로그를 비교해 패턴을 맞춰본다.
- 결과 보고서 추출: 최종 결과를 보고서 형태로 저장한다.
4. 분석 도구
분석 확인에는 아래 도구를 썼다.
- Snorby: Snort 경고를 웹 대시보드로 보여준다.
- Squert: 시계열과 이벤트 관계를 보기 좋게 정리한다.
- ELSA: 대규모 로그를 수집, 정규화, 검색하는 SIEM 도구다.
5. 스노트 소개와 규칙 구조 이해
Snort는 실시간 트래픽을 분석하고 경고를 발생시키는 대표적인 NIDS다.
규칙은 크게 두 부분으로 나뉜다.
- Rule Header: 어떤 트래픽을 볼지 정하는 조건
- 형식:
[Action] [Protocol] [Src IP] [Src Port] [Direction] [Dst IP] [Dst Port] - 예:
alert tcp $HOME_NET any -> $EXTERNAL_NET 80
- 형식:
- Rule Option: 어떤 내용을 탐지할지 정하는 세부 조건
msg:"경고 메시지";content:"탐지할 문자열";pcre:"/정규표현식/옵션";sid:[규칙 ID];rev:[규칙 버전];
6. 정규표현식(PCRE) 이해
content만으로 잡기 어려운 패턴은 pcre를 쓴다. 인코딩 변형이나 복잡한 공격 문자열을 잡을 때 유용하다.
- 메타문자:
.,^,$,|,[],() - 수량자:
*,+,?,{n,m} - 클래스:
\d,\w,\s - 추가 옵션:
i(대소문자 무시),m(멀티라인) - 탐욕적/게으른 수량자:
.*: 가능한 가장 긴 문자열 매칭.*?: 가능한 가장 짧은 문자열 매칭
7. Path Traversal(디렉터리 탐색)
- 패턴:
../(상위 디렉터리 이동) 문자열을 이용해 비인가된 파일(/etc/passwd)에 접근 시도. - 우회 패턴: URL 인코딩 (
..%2f또는..%5c), 이중 인코딩 (..%252f). - 스노트 분석/규칙:
content:"../";(가장 기본적인 탐지)pcre:"/\.\.%2[Ff]/i";(URL 인코딩/탐지)pcre:"/\.\.%5[Cc]/i";(URL 인코딩\탐지)http_uri;옵션을 추가하여 URI 영역에서만 검사하도록 한정.
8. SQL Injection
- 사용자의 입력값이 SQL 쿼리문의 일부로 사용되는 점을 악용.
- 인증 우회:
' OR '1'='1'-- - 데이터 탈취:
UNION SELECT,information_schema - 인코딩: 공백(
%20또는+), 작은따옴표(%27)
- 인증 우회:
- 스노트 분석:
pcre:"/('|\x27).*(OR|--|#|;)/i";(따옴표와 함께 주석/OR 구문 탐지)pcre:/UNION\s+SELECT/i;(UNION SELECT구문 탐지.\s+는 하나 이상의 공백 의미)
9. Directory Browsing
- 공격이 아닌 서버 설정 오류로, 웹 서버가 인덱스 파일(
index.html)이 없는 디렉터리의 파일 목록을 노출하는 현상. - 탐지 (서버 응답): 공격자의 요청이 아닌, 서버의 응답 패킷에 포함된 특정 문자열을 탐지.
"Index of /""Parent Directory"
- 스노트 분석/규칙: 방향성이 중요. (서버 -> 클라이언트)
alert tcp $EXTERNAL_NET 80 -> $HOME_NET any (msg:"Directory Browsing"; flow:to_client,established; content:"Index of /"; ...)
10. Remote OS Command Injection
- 웹 파라미터를 통해 OS 셸 명령어를 주입. 셸 메타 문자 사용.
- 주요 메타 문자:
;(앞 명령어 종료 후 뒷 명령어 실행)|,||(파이프라인, OR 조건)&,&&(백그라운드 실행, AND 조건)command또는$(command)(명령어 실행 결과 치환)
- 스노트 분석/규칙:
http_uri;옵션으로 URI 영역을 검사.pcre:"/[;\|&$()]/";` (URI 내에 셸 메타 문자가 포함되어 있는지 검사)
11. Cross Site Scripting
- 공격자가 삽입한 악성 스크립트(JavaScript)가 다른 사용자(피해자)의 브라우저에서 실행됨.
- 기본:
<script>alert(1)</script> - 우회 (이벤트 핸들러):
<img src=x onerror=alert(1)>,<svg onload=alert(1)> - 인코딩:
%3cscript%3e(<script>)
- 기본:
- 스노트 분석/규칙:
pcre:"/<script/i";(단순<script태그 탐지)pcre:"/on(error|load|click|mouseover)\s*=/i";(다양한 이벤트 핸들러 탐지)pcre:"/%3[Cc]script/i";(URL 인코딩된<script탐지)
12. Remote Code Execution - Shellshock
- CVE-2014-6271
- GNU Bash 셸에서 발견된 취약점. 특정 형식의 문자열이 환경 변수에 할당될 때, 변수 정의부 뒤에 오는 악성 코드가 의도치 않게 실행되는 원격 코드 실행(RCE) 취약점.
- 패턴: 주로 HTTP 요청 헤더(User-Agent, Cookie, Referer 등) 영역에
() { :; };라는 특정 문자열과 함께 실행할 명령어를 삽입.User-Agent: () { :; }; /bin/cat /etc/passwd
- 스노트 분석:
http_header;옵션을 사용해 HTTP 헤더 영역 검사.content:"() { :; };";(Shellshock 고유의 핵심 문자열 패턴 탐지)pcre:"/\(\)\s*\{[^\}]*\};\s*\w+/";(공백 등 변형을 고려한 정규표현식 탐지)

