DDos(Distributed Denial-of-Service, 분산 서비스 거부) Attack
개요
: 여러 대의 공격자를 분산적으로 배치해 동시에 서비스 거부 공격을 하는 방법이다
hping3의 포트스캔을 이용한 DDoS attack
:개요
-> 방화벽을 테스트하고 포트 스캔 테스트를 하며 TCP/IP 스택을 테스트하고 가동 시간을 추출하는 기능 즉, 필요한 포트를 추출한다.
-> 실습환경
: Network Adapter : HostOnly
: Kali : 192.168.10.128 / C class / 192.168.10.129 / 192.168.10.129
: CentOs : 192.168.10.129 / C class /192.168.10.129 / 192.168.10.128, 192.168.10.131
: Windows 10 : 192.168.10.131 / C class / 192.168.10.129 / 192.168.10.129
; Kali와 windows10에서 네임 서버 조회가 모두 되어야한다.
:hping
: 사용법
-> hping3 [옵션] <target Ip Address>
: 실습 1. kali -> Dns Server
: 개요
-> 동기 신호(Sync)후 반송(Sync/Ack)되면 TCP가 완료된고 다시 전송을 위한 연결 준비 상태(RST)로 전환된다.
: 명령 실행
->
: 패킷 분석
No. Time Source Destination Protocol Length Info
3 0.019233546 192.168.10.128 192.168.10.129 TCP 54 1320 → 80 [SYN] Seq=0 Win=512 Len=0
4 0.019766613 192.168.10.129 192.168.10.128 TCP 60 80 → 1320 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460
5 0.019793594 192.168.10.128 192.168.10.129 TCP 54 1320 → 80 [RST] Seq=1 Win=0 Len=0 -> 다음 포트를 스캐닝하기 위한
6 1.019586748 192.168.10.128 192.168.10.129 TCP 54 1321 → 80 [SYN] Seq=0 Win=512 Len=0
7 1.020220431 192.168.10.129 192.168.10.128 TCP 60 80 → 1321 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460
8 1.020262363 192.168.10.128 192.168.10.129 TCP 54 1321 → 80 [RST] Seq=1 Win=0 Len=0
9 2.019842794 192.168.10.128 192.168.10.129 TCP 54 1322 → 80 [SYN] Seq=0 Win=512 Len=0
10 2.020318592 192.168.10.129 192.168.10.128 TCP 60 80 → 1322 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460
11 2.020357113 192.168.10.128 192.168.10.129 TCP 54 1322 → 80 [RST] Seq=1 Win=0 Len=0
12 3.020001036 192.168.10.128 192.168.10.129 TCP 54 1323 → 80 [SYN] Seq=0 Win=512 Len=0
13 3.020286898 192.168.10.129 192.168.10.128 TCP 60 80 → 1323 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460
14 3.020309683 192.168.10.128 192.168.10.129 TCP 54 1323 → 80 [RST] Seq=1 Win=0 Len=0
15 4.023044626 192.168.10.128 192.168.10.129 TCP 54 1324 → 80 [SYN] Seq=0 Win=512 Len=0
16 4.023320860 192.168.10.129 192.168.10.128 TCP 60 80 → 1324 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460
17 4.023341689 192.168.10.128 192.168.10.129 TCP 54 1324 → 80 [RST] Seq=1 Win=0 Len=0
실습 2. kali -> windows 10
:개요
->
: 패킷 분석
-> 포트를 별도로 지정하지 않은 상태에서는 Sync만 전송
-> 포트를 별도로 추가만 했고 실제 서비스는 활성화 되어 있지 않기 때문이다.
3 0.000480294 192.168.10.128 192.168.10.131 TCP 54 2305 → 80 [SYN] Seq=0 Win=512 Len=0
4 1.000311691 192.168.10.128 192.168.10.131 TCP 54 2306 → 80 [SYN] Seq=0 Win=512 Len=0
43 2.001065085 192.168.10.128 192.168.10.131 TCP 54 2307 → 80 [SYN] Seq=0 Win=512 Len=0
46 3.001319161 192.168.10.128 192.168.10.131 TCP 54 2308 → 80 [SYN] Seq=0 Win=512 Len=0
49 4.001547310 192.168.10.128 192.168.10.131 TCP 54 2309 → 80 [SYN] Seq=0 Win=512 Len=0
:실습 3 포트 스캔(열려있는 포트와 닫혀 잇는 포트 검색)
: 명령 실행
-> sudo hping3 --scan 1-1024 -S 192.168.10.129
-> 다음과 같은 오류(*** buffer overflow detected ***: terminated가 발생하면 방화벽을 중지(systemctl stop firewalld)하도록한다
: 분석
:닫혀 잇는 포트:(SYN,ACK)가 없다
:열려 있는 포트:(SYN,ACK)가 있다
실습 4. 공격 대상 시스템에 무작위 IP 주소를 보낸다
-> 명령 실행
:hping3 --rand-source 192.168.10.129 -p 1-1024 -S --flood
: --rand-source (무작위)
: 192.168.10.129(대상 IP)
: -p 1-1024(스캐닝할 포트)
: -S(TCP flag SYN)
: --flood(플로딩)
실습 5.네트워크 패킷 확인(스니핑 도구(tcpdump)을 이용한 확인)
-> 테스트1. CentOs로의 테스트
:명령어 실행후 "top" 명령을 이용해서 리소스 상태를 확인한다
-> 테스트 1. Windows10의 테스트
:
실습 6. 기타 공격 기법
:Sync flooding Acctack
: TCP Session을 연결하는 과정에서 Sync 패킷을 많이 보내서 자원을 고갈시키는 공격
-> helping3 192.168.10.129 -S -i u40 -c 50
:Land Attack
: 공격 대상의 IP를 Sourc IP로 설정해서 루프를 유발시키고 공격효과를 극대화 시키는 공격
-> helping3 192.168.10.129 -a 192.168.10.129 -S -i u40 -c 50
:Smurf Attack
: Source Ip를 변경하고 다이렉트 브로드 캐스트를 사용하여 ICMP echo reply 신호를 많이 받아서 부하를 일으키게 하는 공격
-> helping3 192.168.10.255 -a 192.168.10.129 -S -c 50
Sniffing과 Spoofing
ARP spoofing 보안 조치
-> 시스템 측면
: MAc address를 ARP table에 정적을 등록, 관리하도록 해야한다.
: 시스템의 보안 수준을 강화해야 한다. 즉, 의심될만한 프로그램 설치는 절대 지양한다.
: 보안 서버을 적극 활용한다
-> 네트워크 장비 측면
: Mac flooding 제어 및 정적인 Mac address관리
: 시스코 장비의 경우 ARP Inspection
: VLan으로 격리운용
Sniffing
: 개요
-> 네트워크 상에서 자신이 아닌 다른 상대방드르이 패킷 교환을 훔쳐보는 행위
: 종류
-> Passive Sniffing
-> Hub(Switch)와 같이 모든 노드에 동일한 전기적 신호(ㄷ오기신호)가 복제되는 경우네는 단수히 스니퍼만 동작시켜도 모든 패킷을 잡아낼수가 있다.
-> Active Sniffing
-> Switch 환경에서는 해당 포트로만 데이터가 전송되기 때문에 데이터 신호를 스니퍼가 설치된 스셑ㅁ에 경유하도록 유도하는 방법을 말한다.
Spoofing
: 개요
-> Sniffing 공격의 대표적 기술을 말한다
-> 외부의 악의적인 네트워크 침입지가 웹사이트를 구성한 후 사용자들의 방문을 유도하고 인터넷 프로토콜 TCP/IP(공용 프로토콜)의 구조적 결함을 이용해서 사용자의 스셑ㅁ 권한을 획득한 뒤 정보를 뺴가는 해킹 기법을 말한다.
-> 잘 알려진 기업의 명의로 스팸 메일을 발송하거나 위조 사이트로 접속을 유도하는 기술과 로그인 하려는 컴퓨터가 허가 받은 IP를 도용해서 로그인하는 기법 등을 총칭한다.
: 기법
: ARP Spoofing
-> MAC Address를 속여 Lan에서의 통신 흐름을 왜곡시키는 기법을 말한다.
-> ARP table이 바뀌면 경고를 보내는 툴을 통해 어느 정도는 예방을 할수는 있지만 근복적으로 TCP/IP 프로토콜 자체의 문제이기 때문에 ARP Spoofing에 대한 보안 대책은 없다
-> 관련 패키지(dsniff)
-> arpspoof -i(I/F) eth0(공격자의 인터넷) -t 192.168.10.131(희생자의 IP) 192.168.10.2(희생자의 GATEWAY주소)
: Dns Spoofing
-> DNS에서 전달되는 IP주소를 변조하거나 DNS의 서버를 장악하여 사용자가 의도하지 않는 주소로 접속하게 만드는 공격 기법을 말한다.
-> DNS Spoofing 공격을 통해 개인정보를 수집하는 것을 Pharming이라고 한다.
: IP Spoofing
-> IP Address를 속이는 기법을 말한다.
DNS Spoofing
: 개요
: 공격 방법
-> 사용자로부터 입력받은 도메인 주소(URL)는 DNS 서버에 의해서 IP주소로 변환한 후 서비스를 한다.
-> 즉, DNS 의 주소로 UDP프로토콜을 이용하여 질의하는 과정에서 "중간자 공격"을 이용한 공격 또는 "DNS 주소의 변조가 되었을 경우"를 이용한 공격을 말한다.
: 실습 1.
-> 실습환경
: Network Adapter : NAT
: Kali : 192.168.10.128 / C class / 192.168.10.2 / 192.168.10.2
: Windows 10 : 192.168.10.131 / C class / 192.168.10.2 / 192.168.10.2
-> Attacker와 Victim에서 IP주소와 G/W주소, MAC Address를 확인
: Attacker
: Victim
-> ARP Spoofing
:관련 패키지(dsniff)
:명령
:arpspoof -i eth0 -t 192.168.10.133 192.168.10.2
:설명
: -i (I/F)
: eth0 (공격자의 이더넷)
: -t 192.1668.10.131 (희생자의 IP주소)
: 192.168.10.2 (희생자의 Gateway 주소)
: 실습 2.
-> 실습환경
: Network Adapter : NAT
: Kali : 192.168.10.128 / C class / 192.168.10.2 / 192.168.10.129
: CentOs : 192.168.10.129 / C class / 192.168.10.2 / 192.168.10.129
: Windows 10 : 192.168.10.131 / C class / 192.168.10.2 / 192.168.10.129
-> Kali에서 새로운 호스트(acctack)하고 재구성한다
:window10에서 네임 서버 조회가 모두 되어야한다
-> 사이트 출력
:Windows 10에서 웹브라우저를 이용해서 "attack.gusiya.com"을 입력하고 출력한다
-> 에러시
:ufw 열어주기
-> 결론
G/W가 모두 동일하기 떄문에 어떤 명령을 입련하던 사이트 출력에는 영향을 주지 않는다
arpspoof -i eth0 -t 192.168.10.131 192.168.10.2
arpspoof -i eth0 -t 192.168.10.129 192.168.10.2
다만 G/W 주소만 변경될 뿐이다.
: 실습 3.
-> 실습환경
:Network Adapter : Host only
: Kali : 192.168.10.128 / C class / 192.168.10.129 / 192.168.10.129
: CentOs : 192.168.10.129 / C class / x / x
: Windows 10 : 192.168.10.131 / C class / 192.168.10.129 / 192.168.10.129
-> CentOs의 Apache Web server의 기본 경로를 /export/home/samadal로 변경한다.
:기본 경로에 배포한 소스코드를 이용해서 "login.html"문서를 생성한다
:samadal 디렉터리의 권한을 "701"로 수정한다
:Apache web Server의 환경설정을 수정한다
:방화벽 타입(chcon -R -h -t httpd_sys_content_t /export/home/)을 변경, 적용한다
-> 보안 취약점 분석
:kali에서 와이어샤크를 실행시켜놓는다
:Windows10에서 gusiya.com/login.html을 입력 실행
:아이디, 비밀번호 입력
-> 패킷 분석
89 4.288406608 192.168.10.131 192.168.10.129 HTTP 738 POST /%EC%84%9C%EB%B2%84%EC%9D%98url HTTP/1.1 (application/x-www-form-urlencoded)
*네트워크 해킹 정차, 정보 수집
-활성화된 호스트 식별
-Kali Linux
: 개요
: 여러 해킹 도구 & 해킹 툴을 포함하고 있으면 모의해킹을 시도하는 리눅스로 많이 사용되고 있다
: 데비안 리눅스를 기반으로 만들어졋다
: 파일 다운로드
: https://www.kali.org
: 기본 설정
: 관리자 및 사용자 쉘 변경과 비밀번호 재설정
-> 관리자 쉘 변경
-> 사용자 쉘 변경
-> 쉘 적용
-> 비밀번호 변경(sudo passwd)
:네트워크 설정
: 방화벽
-> 방화벽 관련 패키지 설치 : sudo apt -y install ufw
실습 1.
No. Time Source Destination Protocol Length Info
5 1.117517380 192.168.10.128 192.168.10.131 ICMP 98 Echo (ping) request id=0x5248, seq=1/256, ttl=64 (reply in 6)
6 1.118262034 192.168.10.131 192.168.10.128 ICMP 98 Echo (ping) reply id=0x5248, seq=1/256, ttl=128 (request in 5)
-> TTL을 보면 송신부(Kali)는 Linux이기에 64, 수신부는 "Windows"이기에 "128"이 출력되는 것을 알 수 있다.
:tracert
:개요
-> 네트워크 정보를 확인
-> 목적지로 가는 동안에 거치는 라우터를 기록(출력)
-> Windows에서는 "tracert"를 사용
: 실습환경
-> Network Adapter : HOST-ONLY
-> Kali : 192.168.10.128 / C class / 192.168.10.129 / 192.168.10.129
-> Windows 10 : 192.168.10.131 / C class / 192.168.10.129 / 192.168.10.129
-> CentOS : 192.168.10.129 / C class / X / X
: 실습
-> 각 시스템별로 나머지 시스템과의 통신 확인
-> 경유하는 라우터(192.168.10.129) 확인
:arping
:개요
-> ARP 패킷을 이용한 호스트를 식별
-> OSI 7 Layer의 3계층 이하(2계층)에서만 동작
-> 로컬 네트워크에 있는 시스템끼리만 통신이 가능
: 실습환경
-> Network Adapter : HOST-ONLY
-> Kali : 192.168.10.128 / C class / 192.168.10.129 / 192.168.10.129
-> Windows 10 : 192.168.10.131 / C class / 192.168.10.129 / 192.168.10.129
-> CentOS : 192.168.10.129 / C class / X / X
: 실습
-> 도메인으로 테스트
60 bytes from 00:0c:29:21:c4:12 (192.168.10.129): index=0 time=579.148 usec
60 bytes from 00:0c:29:21:c4:12 (192.168.10.129): index=1 time=188.978 usec
60 bytes from 00:0c:29:21:c4:12 (192.168.10.129): index=2 time=194.522 usec
: 분석
->
:Port Scanning
: 개요
: TCP 연결 설정(3-way handshaking) 및 TCP 연결 종료(4-way ㅗ뭉노마ㅑㅜㅎ)
: 개요
-> 공격자와 공격 대상 사이의 연결 상태를 통해 포트 스캐닝할 수 잇는 기법을 의미
-> 와이어샤크를 이용해서 확인이 가능하다
: TCP 연결
-> 공격자 -> SYN -> 공격대상 -> SYN + ACK -> 공격자 -> ACK -> 공격 대상
: TCP 종료
-> 공격자 -> FIN(연결 종료 요청) -> 공격대상 -> ACK & FIN -> 공격자 -> ACK(연결 성공)-> 공격 대상
: TCP Flag
: SYN(SYNchronize Sequence NUmbers)
-> 접속을 요청하는 패킷(데이터의 묶음)
: ACK(ACKnowledgment)
-> 응답 패킷
: RST(Connection Reset)
: 다시 연결 종료(이미 연결되어 있기 떄문에 재접속하지 않도록 끊어버린다)
: FIN(Finish)
-> 연결 종료 요청하는 패킷
: TCP 연결 리렛
-> 존재하지 않은 포트로 연결을 요청할 떄(승인되지 않은 포트로 연결 시도)
-> Target(Destination, Vimtim)의 TCP는 연결을 파기 하기 위해 RST전송
-> 공격자 -> SYN -> 공격대상 -> SYN + RST -> 공격자
-> 비정상적인 상황일 떄(정상적인 경로(승인된 경로)를 통한 통신이 아닌 상황)
-> 해킹을 종료한 후 이루어진다
-> 공격자 -> RST -> 공격대상 -> SYN + RST -> 공격자
-> Target이 장시간동안 유휴 상태일 떄
-> 연결 종료 요청
-> 공격대상 -> 난 현재 휴면상태 -> 공격자 -> RST -> 공격대상
: TCP Scan
:개요
-> TCP를 이용한 포트 스캔
-> 3-way-handshaking(TCP 연결 과정) 과정을 거친다
-> 빠른 포트 스캔을 할 수 있다
-> nmap
-> 포트를 스캔하기 전에 어떤 시스템이 동작중인지를 먼저 확인한다
-> 응답하지 않는 시스템은 스캔을 하지 않는다
-> 가장 많이 사용하는 포트 스캔 명령어
: 실습 환경
-> Network Adapter : HOST-ONLY
-> Kali : 192.168.10.128 / C class / 192.168.10.129 / 192.168.10.129
-> Windows 10 : 192.168.10.131 / C class / 192.168.10.129 / 192.168.10.129
-> CentOS(with DNS) : 192.168.10.129 / C class / X / X
: 실습
: 개요
-> 가장 많이 알려진 포트(TCP 1000개)를 스캐닝한다
-> TCP 연결된 것들만 스캔한다
-> 1000개 중에서 존재하지 않는 포틀 연결을 요청할 때 열린 포트에서는 더이상 연결이 안되게 끊어버린다.
: 선수 작업
-> 시스템 사이에 통신이 되는지를 확인(ping)한다.
-> kali에서 NameServer조회(nslookup)를 했을 떄 정상적으로 출력되어야한다.
: 명령 실행
-> nmap -s(스캔 타입을 정의하는 옵션) T(옵션) 192.168.10.129(공격 대상)
Nmap scan report for www.gusiya.com (192.168.10.129)
Host is up (2.7s latency).
Not shown: 902 filtered tcp ports (no-response), 92 filtered tcp ports (host-unreach)
PORT STATE SERVICE
20/tcp closed ftp-data
21/tcp open ftp
22/tcp open ssh
53/tcp open domain
80/tcp open http
3306/tcp open mysql
MAC Address: 00:0C:29:21:C4:12 (VMware)
: 와이어샤크를 이용한 패킷 분석
Source Destination Protocol Length Info
192.168.10.128 192.168.10.129 TCP 74 42460 → 3306 [SYN] : 공격자 -> 공격대상
192.168.10.129 192.168.10.128 TCP 74 53 → 57550 [SYN, ACK] 공격대상 -> 공격자
192.168.10.128 192.168.10.129 TCP 74 41634 → 23 [SYN] 공격자 -> 공격대상
192.168.10.128 192.168.10.129 TCP 66 42460 → 3306 [RST, ACK] 정상적인 리셋, 다음 포트를 스캔해야 하기 떄문에 리셋
192.168.10.128 192.168.10.129 TCP 74 41366 → 25 [SYN]
: 실습 2.
:개요
-> 연결된 상태만 스캐닝한다
-> TCP SYN FLAG를 스캔한다
-> 명령 실행 : nmap -sS 192.168.10.129
:와이어샤크를 이용한 패킷 분석
Source Destination Protocol Length Info
192.168.10.128 192.168.10.129 TCP 58 36952 → 21 [SYN]
192.168.10.128 192.168.10.129 TCP 58 36952 → 53 [SYN]
192.168.10.128 192.168.10.129 TCP 58 36952 → 22 [SYN]
192.168.10.128 192.168.10.129 TCP 58 36952 → 80 [SYN]
192.168.10.128 192.168.10.129 TCP 58 36952 → 3306 [SYN]
: 실습 3.
:개요
-> nmap -sTV --version-intensity 0 www.gusiya.com
-> 모든 포트를 대상으로 하되 검사하지 않았던 포트까지 스캐닝 한다.
-> V(Verbose, 진행 상태를 화면에 출력)
-> --version-intensity <레벨> (스캔강도설정)
-> 0 (5분마다)
-> 1 (15초마다)
-> 2 (0.4초마다)
-> 3 (기본값,일 회
-> 4 (5분 동안만)
-> 5 (75초 동안만)
: UDP scan(nmap, unicornscan)
: 개요
-> UDP를 이용한 포트 스캔
-> UDP를 사용하는 대표적인 서비스
: DHCP(IP주소를 자동으로 생성(유동 IP), 공유기(라우터와 스위치가 합쳐진 장비)
: DNS(네임 서버)
: SNMP(모니터링)
: TFTP(설정 내용이 저장된 서버)
-> TCP에 비해 느린 포트 스캔을 한다
: 특징
-> 포트가 열려잇을때
->공격자 -> UDP 패킷 전송 -> 공격 대상 -> 무응답- >공격자
-> 포트가 닫혀잇을떄
-> 공격자 -> UDP 패킷 전송 -> 공격 대상 -> ICMP Unreachable 패킷 전송 -> 공격자
-> 응답하지 않는 시스템은 스캔을 하지 않는다
-> 가장 많이 사용하는 포트 스캔 명령어
:실습 1. namp n-sU www.gusiya.com
:개요
-> 응답을 받지 못한 경우라면 포트가 열려있는지 차단되었는지 파악할 수가 없다.
패킷 분석(UDP, 포트가 열려있을 떄)
<정방향 조회영역>
192.168.10.128 192.168.10.129 DNS 74 Standard query 0x4ecc A www.gusiya.com
192.168.10.129 192.168.10.128 DNS 123 Standard query response 0x4ecc A www.gusiya.com A 192.168.10.129 NS ns.gusiya.com A 192.168.10.129
<역방향 조회영역>
192.168.10.128 192.168.10.129 DNS 87 Standard query 0x9df0 PTR 129.10.168.192.in-addr.arpa
192.168.10.129 192.168.10.128 DNS 162 Standard query response 0x9df0 PTR 129.10.168.192.in-addr.arpa PTR ns.gusiya.com PTR www.gusiya.com NS ns.gusiya.com A 192.168.10.129
패킷 분석(ICMP, 포트가 닫혀잇을떄)
192.168.10.128 192.168.10.129 ICMP 70 Destination unreachable(Host administratively prohibited)
192.168.10.128 192.168.10.129 ICMP 70 Destination unreachable(Host administratively prohibited)
192.168.10.128 192.168.10.129 ICMP 70 Destination unreachable(Host administratively prohibited)
192.168.10.128 192.168.10.129 ICMP 70 Destination unreachable(Host administratively prohibited)
실습 2. Unicornscan
: 개요
-> 콘솔창에서는 내용이 출력되지 않고 와이어샤크를 통해서만 확인 가능하다
: 테스트 1 : sudo unicornscan -m U -lv www.gusiya.com
:정방향 조회영역과 역방향 조회영역이 함께 출력
: 테스트2 : sudo unicornscan -m U -lv www.gusiya.com:21-3306
: 우측에 지정한 포트의 범위(21-3306)에 있는 포트들만 출력된다.
실습 3. dnsmap
: 개요
->
: 실습1. 하위 도메인 정보를 출력