일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- HTTP2
- 오탐
- stream buffer
- idps
- isdataat
- chromium 탐지
- IPS
- sinature
- Suricata
- DDOS
- 탐지
- rule
- 시그니처
- TLS
- IDS
- slowloris
- Reassembly
- chrome 탐지
- 크롬 탐지
- dsize
- 재조합
- signatrue
- SSL
- flowbits
- 미탐
- snort
- 암호화
- stream_size
- 수리카타
- header dos
- Today
- Total
목록분류 전체보기 (15)
linefilt
raw stream based Slowloris Slowloris는 서버의 가용 자원을 최대한 낭비하여 DoS를 유발하는 공격으로 일반적인 Flooding 공격과 달리 단순한 임계 값으로는 확인할 수 없으며, 문자열 식별 방식 또한 한계를 가지고 있다. 리버스 프록시나 HTTP 서버 등 최종 Termination 역할을 하지 않는 대부분의 보안장비에서, Slowloris 공격을 탐지하는 방식으로 HTTP 메시지에서 0x0d0a0d0a가 없는 세그먼트를 탐지한다. 이 방법은 대부분 간단한 테스트를 진행하는 방식에 초점이 맞춰져 있기 때문에 실제 트래픽에 이러한 탐지 방법을 적용하는 것은 무리가 있다. 이 문서에서는 문자열 탐지 방식에 적합한 Suricata를 사용하여 Slowloris 공격의 오탐을 최소화..
Snort, Suricata는 TCP 재조합과 HTTP 파서를 제공하기 떄문에, TCP Segmentation이나 우회하는 공격을 탐지할 수 있다. 그러나 파서의 식별 처리 범위를 넘어서는 데이터 길이로 구성된 패킷 간의 탐지 또는 별도의 트랜잭션 메시지와 처럼 개별적인 패킷 간의 탐지를 위해서는 flowbits를 사용하여 chain을 구성해야 한다. 그럼에도 불구하고 flowbits는 multiplexing을 기본적으로 지원하는 HTTP2에서는 견고한 탐지를 위해 사용하기는 어렵다. flowbits는 동일한 5-Tuple을 기준으로 flow를 식별하기 때문에 HTTP2 내부의 multiplexing이 존재하더라도 동일한 존재로 보일뿐이다. 사용자는 stream 2의 Header와 Data를 조건으로 하..
GREASE(Generate Random Extensions And Sustain Extensibility)는 크롬 55버전 부터 추가된 필드이다. 이 필드를 통해서 현재 Chromium 기반의 브라우저를 탐지하는데 사용할 수 있다. GREASE의 목적은 TLS 통신에서 서버의 버그를 사전에 발견하고 프로토콜 확장에 따라 발생하는 문제를 방지하고자 하는 것이다. SSL/TLS에서는 데이터를 교환하기 이전에 핸드쉐이킹을 통해서 버전 및 암호화에 필요한 정보를 교환한다. 클라이언트가 서버로 전송하는 ClienHello에 TLS 1.2을 명시하고 전송했을 때, TLS 1.2을 지원하는 서버라면 이에 대하여 정상적인 ServerHello를 통해서 응답을 진행한다. 만약 서버가 TLS 1.2를 지원하지 않는다면,..
TCP 스트림은 재조합을 지원하기 때문에 문자열 분할에 대해 크게 문제될 것은 없다. 하지만, 문자열 패턴이 아닌 순수한 스트림 또는 트래픽 양을 확인해야 하는 경우에는 탐지하기 곤란하거나 고려해야 할 요소들이 훨씬 많아질 수 있다. 이런 요소들 중 TCP Out-Of-Order (OOO) 또는 segment loss는 연속된 스트림에서 TCP segement의 양을 측정하는 것을 매우 어렵게 만든다. 아래 내용은 TCP OOO와 segment loss가 정확히 몇번 발생했는지 등의 완전성을 목표하지 않는다. 이런 현상이 발생하는 빈도를 탐지하는 것을 목표(실시간 완전 탐지는 어려움이 존재)로 하며, Suricata IPS(Inline)모드를 사용하여 탐지한다. suricata는 기본적으로 설정된 chu..
CPU: E5-2620v4 (HT enabled), RAM: 48GB, Ethernet: Intel X540-T2 suricata 5.0.0-beta1, fedroa29 4.18.16-300 flow-timeout tcp: new: 5 established: 600 closed: 10 bypassed: 600 emergency-new: 5 emergency-established: 100 emergency-closed: 10 emergency-bypassed: 50 loaded rules suricata.rules: 20498 signatures processed. 1227 are IP-only rules, 6384 are inspecting packet payload, 12564 inspect appli..
특정 트래픽들을 탐지하기 위해서 snort 및 suricata에서는 단순 문자열 매치뿐만 아니라 TCP 헤더에 관한 여러 가지 키워드를 제공하고 있다. flowbits나 stream_size 등이 이 경우에 포함이 된다. flowbits는 한 번에 식별할 수 있는 버퍼(chunk-size)를 초과하는 경우에 사용하기도 하며, stream_size는 세션에서 처음 시퀀스를 기준(seq 0)으로 절대 위치를 식별하거나 클라이언트 또는 서버가 전송한 bytes의 양을 측정할 수 있다. 위와 같은 옵션에도 불구하고 일부 상황에서는 특정 세그먼트들을 탐지하기 어려움이 있다. 1. 암호화 스트림을 식별하기 위해서 dsize를 연속적으로 매치해야 하는 경우가 발생 flowbits는 시퀀스를 식별하지 않아 "TCP o..
트래픽에서 일반적인 패턴 기반은 손쉽게 문자열을 통해서 행위나 응용프로그램을 식별할 수 있다. 하지만, 암호화된 트래픽에서는 특정 문자열을 찾아내는 것이 불가능하다. 이때 패킷들의 특정 사이즈를 엮어 탐지의 방법으로 사용할 수 있다. 아래 룰들은 RDP over SSH를 탐지하는 룰 셋의 일부이다. snort는 dsize 범위 지정 ( )이 inclusive이지만, suricata는 exclusive로 동작한다. alert tcp-pkt any any -> any 22 (msg:"RDP over SSH (Reverse) set"; flow:established,to_server; dsize:96; prefilter; flowbits:isnotset,rostr; flowbits:set,rostr1; noa..
dsize dsize는 일반적으로 IP, 및 TCP, UDP 패킷의 페이로드를 매치하는데 사용할 수 있다. isdataat isdataat은 보통 페이로드 존재에 대한 유효성을 검사하는데 사용한다. 스트림 탐지에서 isdataat은 누적 길이를 기반하여 판단한다. Payload Header 대부분의 프로토콜들은 각각 자신들의 메시지에 대한 정보를 담고 있다. 이 정보를 탐지하여 길이를 유추할 수 있다. 상황에 따라 각 옵션들을 적절히 사용하는 것이 중요하다. dsize는 가급적 원래의 메시지 자체가 300이하와 같이 작은 메시지에 대해서 사용하는 것이 적절하다. 클라이언트는 각각의 MTU 사이즈를 직접 조정할 수 있기에 큰 값을 매치하는 것은 우회 가능성을 높인다. 서버 접속에서 너무 작은 MTU에 대한..
원격 데스크톱은 대상 컴퓨터가 원격 데스크톱을 허용해두었다면, 윈도의 mstsc 이용해서 간단하게 접속할 수 있고 RDP 환경에서는 대부분의 기능을 거의 동일하게 사용할 수 있기에 많은 표적이 될 수 있다. 그림 1은 윈도우에서 mstsc를 이용한 원격 데스크톱 접속 시 패킷, 그림 2는 우분투에서 RDV, KRDC, Remmina를 통해서 접속 시의 패킷 페이로드를 나타낸다. 두 개의 패킷에서 공통적으로 찾아볼 수 있는 패턴은 |03 00 00|과 |e0 00 00 00 00| 이며, 이 패턴들은 Emerging-Threats Open 룰에서도 거의 동일하다시피 찾아볼 수 있는 패턴이다. 이처럼 RDP가 경유하는 구간에서는 IDS, IPS의 간단한 정책만으로도 RDP 요청을 탐지할 수 있다. 문제는 R..
Client에서 Scan과 Crawler의 차이라고 한다면 서버의 데이터를 가져온(GET) 뒤 데이터 파싱의 유무라고 볼 수 있다. 이를 다시 중간 경유지인 네트워크 구간 탐지 관점(IDS뿐만 아니라)으로 본다면, URL Scan과 Crawler의 특별한 차이는 없다. Crawler는 많은 정보를 가져오기 위해서 결국 URL을 탐색해야 되기 때문이다. 외부 구간이 HTTPS 프로토콜을 사용하더라도 리버스 프록시 등을 이용해서 내부 구간에 있는 IDS를 통해서 탐지가 가능 하기 때문에 특정 스캐너가 가지고 있는 문자열을 기반으로 탐지 할 수 있다. 하지만, Scanner를 식별할 수 있는 패턴은 변경이 가능하며, 이러한 종류가 너무 많다는 것이 가장 큰 문제이다. 또한 Injection과 같은 공격과 달리..
무료 인증서의 보편화로 인하여 기업의 서비스 뿐만 아니라 개인 도메인에 대한 암호화에 대한 처리는 날이 갈수록 높아지는 상황에서, 특히 응용프로그램 제어 뿐만 아니라 악성 코드를 배포하기 위한 서버 또한 암호화 통신을 하여 제어하기 어렵게 만들고 있다. 전용 암복호화 장비나 HAproxy와 같은 리버스 프록시를 이용하여 종단 서버구간의 페이로드를 식별하는 방법이 있지만, 성능 문제나 일부 응용프로그램들은 복호화 불가능한 문제가 여전히 남아있다. Inspection이 불가능한 패킷을 TCP 헤더 및 SSL/TLS Handshake 패턴을 통한 제어 alert tcp $HOME_NET any -> $EXTERNAL_NET 443 (msg:"web.telegram"; flow:to_server,establis..
악성행위에 사용되는 페이로드 단일 패킷 사이즈에 존재 할 수도 있고 다양한 상황에 따라 패킷의 경계부분에 위치하여, 분할되는 경우가 있을 수 있다. 그렇기 때문에 IDS, IPS에서 특정 패턴을 검사하기 위해서 스트림 재 조합 기능은 반드시 필요한 기능이다. 물론 사용되는 모든 룰들이 재 조합 기능을 필요로 하는 것은 아니나, 특정 상황에서는 오로지 재 조합되지 않은 단일 패킷만 검출해서 확인해야 하는 경우도 있다. raw 기반 (Transport Layer) 재조합은 시퀀스 번호와 같이 4계층에서 순서를 정렬할 수 있는 TCP만 지원한다. 룰 제작 측면에서 suricata reassembly 설정에 대하여 확인하며, 본 글에서는 크게 3가지 항목으로 분류로 진행한다. TCP 스트림 재 조합 깊이 (de..
IDS 및 IPS의 로그는 일반적으로 방화벽보다는 더 많은 정보를 제공하기 때문에 유용하게 사용할 수 있다. 하지만 관리자 입장에서 기록은 되어야 하나 우선순위가 낮은 로그도 있을 수 있으며, 중복적으로 발생하는 로그들로 인해서 불필요한 쓰레기 값으로 취급될 수 있다. threshold는 이처럼 불필요한 로그를 줄이는데 사용할 수 있다. threshold: type , track , count , seconds ; threshold type은 limit, threshold, both 3가지가 있다. limit: limit은 seconds 동안 count 만큼 까지만 로그를 발생시킨다. threshold: type threshold, track by_src, count 7, seconds 60 60초 동안..
테스트 환경 Emerging Threats Rules ( approximately 18,000 Rules)Intel Xeon E5-2620v4 8 core 16 threads Intel X540-T2 10G Network Adapter 4 DIMM, DDR4 21300 48GB RAM CPU - Rx queue 1:1 dedicated/pining Set affinity Suricata v4.1rc IPS mode(worker)/AF-Packet(v3), Hyperscan 4.7.0Throughput: Iperf3 1518 bytes, 65 threads(per threads 1 Src IP, 1 Dst IP, Dst Port 80 / Total 65 sessions) 180 초간 평균 값 무작위 룰 적..