# LOIC 트래픽 분석
- LOIC : 공격대상에 대량의 UDP와 TCP 트래픽을 전송함(단 하나의 LOIC로는 공격대상의 자우너을 고갈시키지 못함)
- 두 가지 모드를 제공함
1. 사용자는 공격대상의 주소를 입력할 수 있음
2. HIVEMIND, 사용자가 LOIC를 IRC서버로 연결시킴
> 사용자들은 IRC에 연결된 사용자들이 자동으로 공격할 수있는 공격대상을 선정함
sourceforge홈페이지에서 LOIC 파일 다운로드.
압축을 풀었더니 exe실행파일이라 실행불가.
리눅스에서 exe파일 실행시켜준는 WINE도 설치해봤지만 실행할 수 없었음..
1) IRC 명령어를 Hive에 파싱하기
※ 단순히 LOIC를 다운로드 하는 것은 불법이 아니지만, 어나니머스 HIVE에 연결하여 특정 사이트의 서비스에 영향을 미칠 목적으로 사용한다면 법에 위반 됨.
- 공격 방법 : 특정 IRC(Internet Relay Chat) 서버로 연결하여
!lazor targetip=66.211.---.-- message=test_test port=80 method=tcp wait=flase random=true start 입력함
> HIVEMIND 모드로 LOIC가 IRC에 연결되어 있는 모든 어나니머스 멤버는 즉시 공격대상에 공격 시작 가능
- 대부분의 IRC서버는 TCP포트 6667번을 사용함
2) 진행 중인 DDoS 공격 식별하기
- 공격을 탐지하기 위해 패킷의 임계치를 설정함(특정 주소를 사용하고 있는 사용자로부터 이 패킷의 숫자가 넘으면 공격을 염두에 두고 좀 더 조사해야한다는 것을 의미함)
- 이 수치가 넘었다고해서 100% 장담할 수 는 없지만 추가적으로 LOIC다운로드를 하고 HIVE 명령어를 수용한 후에 실제공격이 일어났다면 DDoS공격에 참여했다는 충분한 증거가 됨.
3) TTL(Time-to-Live) 필드 이해하기
- TTL 필드 : 8 bits(0~255의 값을 가짐)
- IP 패킷을 전송할 때 컴퓨터는 TTL필드를 설정하여 패킷이 목적지까지 갈 때 까지 최대 몇 번의 홉을 할 수 있는 지 설정함.
- 패킷이 거치는 모든 라우팅 장비에서는 TTL값을 1만큼 감소시킴.
- 팔드의 값이 0이 되면 라우터는 무한 라우팅 룹(loop)을 방지하기 위해 패킷을 버리게 됨.
ex. 8.8.8.8 이라는 주소에 TTL 값 64를 가지고 ping을 전송했는데 돌아온 값을 보니 TTL값이 53이었다면 패킷이 11 개의 라우팅 기기를 거친 것임
* ping(핑) : 다른 호스트에 IP데이터그램 도달 여부를 조사하기 위한 프로그램.
- '-v' : 세부내용을 보여줌
- '-nn' : 이름 변환 비활성화
- 'host 8.8.8.8' : 8.8.8.8이라는 특정주소를 필터링함.
4) Scapy로 TTL필드 처리하기
- 소스 IP주소와 전송 받은 패킷의 TTL을 출력하는 스크립트
- IP 층의 패킷을 검사하고, IP소스주소와 TTL 필드를 추출하여 이들 필드를 화면에 출력함.
- checkTTL() : IP 소스 주소와 TTL을 입력 받아서 유효하지 않은 TTL에 대한 메시지를 출력함
> 조건문으로 사설 IP주소에서 오는 패킷을 제거함.
> IPy 라이브러리를 임포트함.
> 클래서 IP가 Scapy 클래스 IP와 충동하는 것을 방지하기 위해 IPTEST라고 분류함
> 만약 IPTEST(ipsrc).iptype()가 'PRIVATE'을 반환하면 checkTTL 함수에서 반환하여 패킷 검사를 무시함.
# 스톰의 패스트 플럭스와 컴피커의 도메인 플럭스
1) DNS에 숨겨있는 정보
* nslookup : 네트워크 관리 명령 인터페이스 도구로서, 도메인 네임을 얻거나 IP주소 매핑 또는 다른 특정한 DNS 레코드를 도메인 네임 시스템(DNS)에 질의할 때 사용함.
- 192.168.81.2에 있는 DNS 서버가 whitehouse.com을 ip주소 54.208.114.32로 변환함.
- 클라이언트는 DNS Question Record(DNSQR)를 생성하여 whitehouse.com의 IPv4 주소를 요구함.
- 서버는 DNS Resource Record(DNSRR)를 추가함으로써 응답함
- DNSRR은 whitehouse.com의 IP주소를 제공함.
2) Scapy로 DNS 트래픽 처리하기
- DNS 프로토콜 요청을 Scapy로 보면 각각에 포함되어 있는 필드를 볼 수 있음.
- DNSQR은 질문 이름(qname), 질문 종류(qtype), 질문 클래스(qclass) 등을 포함함.
- 앞의 예(whitehouse.com)
> qname : whitehouse.com,
> DNS 서버는 응답에 DNSRR을 추가함으로써 응답함.
- DNSRR에는 리소스 기록 이름(rrname), 종류(type), 리소스 기록 클래스(rclass) 그리고 TTL이 포함되어 있음.
3) Scapy로 패스트 플럭스 트래픽 탐지하기
- DNS트래픽을 저장하고 있는 fastFlux.pcap 다운로드
https://github.com/bigsnarfdude/violentPythonForHackers/blob/master/CH4/fastFlux.pcap
bigsnarfdude/violentPythonForHackers
collection of python tools. Contribute to bigsnarfdude/violentPythonForHackers development by creating an account on GitHub.
github.com
- pcap을 읽어들여 DNSRR가 포함된 패킷을 처리하는 파이썬 스크립트
- Scapy의 .haslayer() : 프로토콜 타입을 입력받아서 불리언을 반환함.
- 패킷이 DNSRR을 포함하고 있으면 도메인 이름과 IP주소를 포함하고 잇는 rrname과 rdata 변수를 읽어옴
> 도메인 이름을 인덱스화해서 만들어놓은 딕셔너리에서 이 도메인 이름을 확인할 수 있음
(만약 기존의 IP주소가 다르면 새로운 주소를 딕셔너리에 포함시킴)
4) Scapy로 도메인 플럭스 트래픽 탐지하기
- 컨피커에 감염된 컴퓨터 분석해보기
> 컨피커 : 도메인 플럭스 기법을 활용함
- 서버에서 전송하는 응답 중에 도메인 이름에 대한 오류 메시지가 있는 부분을 살펴봄.
- 서로 다른 버전의 컨피커는 여러 개의 DNS 이름을 시간마다 생성함.
- 여러 개의 도메인 이름이 가짜였고, 실제 공격 명령 서버를 숨기기 위해 사용되었기 때문에 대부분 DNS서버는
이름을 실제 주소로 변환할 수 없었고, 대신에 오류 메시지를 생성했음.
- 오류 메시지가 있는 모든 DNS 응답을 식별하여 현재 진행중인 도메인 플럭스 공격을 확인함.
- pcap 파일 다운로드 ('domainFlux.pcap')
https://github.com/bigsnarfdude/violentPythonForHackers/blob/master/CH4/domainFlux.pcap
bigsnarfdude/violentPythonForHackers
collection of python tools. Contribute to bigsnarfdude/violentPythonForHackers development by creating an account on GitHub.
github.com
- testDomainFlux.py
> 네트워크 캡쳐를 읽어들여서 캡쳐에 있는 모든 패킷을 살펴봄.
> DNS 패킷 : anrode 필드를 포함하고 있음
> 서버의 소스포트가 53으로 오는 것만 확인함
> rcode가 3이면 도메인 이름이 존재하지 않는 것을 의미함.
> 도메인 이름을 화면에 출력하고 카운터를 하나 증가시킴
# 케빈 미트닉과 TCP 일련 번호 예측 공격
-> TCP 세션 하이재킹(TCP 일련번호 예측)
- 각 네트워크의 연결을 추적하는 데 사용하는 일련번호에 무작위성이 없다는 것을 이용하여 IP 주소 스푸핑을
통해 하이재킹하는 공격.
1) TCP 일련번호 예측 공격 만들기
- 미트닉이 공격한 컴퓨터는 원격에 있는 서버와 신뢰관계가 있어 rlogin 프로토콜(TCP 포트 513번)을 사용하여
접속할 수 있었음
- rlogin은 공개 키나 패스워드 같은 방법이 아닌 소스 IP주소만을 확인하는 것을 인증체계로 하여 보안적이지 않았음
- 미트닉 -> 시모무라 컴퓨터 공격하기
(1) 서버가 신뢰하는 컴퓨터를 찾기
(2) 신뢰하는 서버를 "침묵" 시킴
(3) 그 서버로 연결을 스푸핑함
(4) TCP 3방향 핸드쉐이크와 ACK를 스푸핑함
2) TCP 일련번호 계산하기
- TCP SYN을 전송하고 TCP SYNACK를 기다림
- 전송을 받으면 ACK에 있는 TCP일련번호를 제거하고 화면에 출력함
- 4개의 패킷에 대해 반복적으로 수행하여 패턴이 있는 지 확인함.
- Scapy에서 자동으로 값을 채워 넣기 때문에 모든 TCP와 IP필드를 채워넣을 필요가 없음.
3) TCP 연결 스푸핑하기
- 계산한 일련번호를 통해 ACK를 해당 일련번호로 전송한다.
# SCAPY로 IDS 공격하기
- IDS : 네트워크 침입탐지시스템으로 IP 네트워크에있는 패킷을 로깅하면서 실시간으로 트래픽 분석 가능함.
- IDS는 이미 알려진 악성 시그니쳐와 패킷을 비교함으로써 공격이 성공하기 전에 네트워크 분석가에서 공격을 경고함.
- SNORT IDS 시스템 : 정보수집, 공격, DOS 공격 등 다양한 공격 벡터 종류를 탐지할 수 있는 서로 다른 룰이 포함됨
(룰 내용 : TFN, tfn2k, Trin00, DDoS 등 4가지 경고 탐지)
- 공격자가 TFN, tfn2k 또는 Trin00을 해당 시스템에 사용하면 IDS는 이 공격을 탐지하여 분석가에게 알림
- 그러나, 분석가가 해킹여부를 합리적으로 판단할 수 있는 것보다 더 많은 경고를 받으면 분석가들은 데이터 양에
압도당해 중요한 공격 내용을 놓칠 수 있음
- 공격자들은 분석가들을 압도하는 수준의 경고를 발생시키는 툴을 만듦.
** 실제 공격 실습은 나중에 더 해보기!!
'Security' 카테고리의 다른 글
정보수집 (0) | 2020.03.29 |
---|---|
무선 기기 해킹 (0) | 2020.03.22 |
1. 네트워크 트래픽 분석(PyGeoIP, Dpkt 패킷, 구글어스) (0) | 2020.03.14 |
포렌식 수사(메타데이터) (0) | 2020.03.13 |
컨피커, 노력하면 된다 (0) | 2020.03.12 |