3. 네트워크 해킹과 보안
6.1) DoS
▣ DoS(Denial of Service) 공격의 개념
- DoS공격은 다른 해킹에 비하여 비교적 간단.(한줄 명령어)
- 공격 대상이 수용할 수 있는 능력 이상의 정보나 사용자 또는 네트워크의 용량을 초과시켜 비정상적으로 작동하게함.
▣ DoS 공격의 분류
- 파괴 공격 : 디스크나 데이터, 시스템의 파괴
- 시스템 자원의 고갈 : CPU, 메모리, 디스크의 사용에 과다한 부하를 가중시킴.
- 네트워크 자원의 고갈 : 쓰레기 데이터로 네트워크의 대역폭을 고갈시킴.
▣ DoS 종류
- 1-Tier Attack : 1대1 공격. Attacker가 Victim을 바로 공격.
- 2-Tier Attack : 다수 대 1 공격. 공격자가 다수의 좀비pc를 이용하여 희생자를 공격.
- 3-Tier Attack == DDos (Distributed Denial of Service)
☞ 최상위 공격자를 C&C(Command&Control)이라 부름.
☞ 최상위 공격자가 행동대장격인 핸들러들을 시켜 똘마니에 해당하는 좀비pc로 희생자를 공격.
☞ 실제로 공격 행위를 한 건 좀비pc이므로 C&C를 추적하기 어려움.
6.2) Ping of Death
- Ping을 이용하여 ICMP 패킷을 정상적인 크기보다 크게 만들어 전송.
- 큰 패킷은 전송 동안 MTU로 인해 단편화되어 아주 작은 프래그먼트로 전송됨.
- 희생자 컴퓨터는 이 모든 작은 프래그먼트들을 모두 처리해야하기때문에 많은 부하가 걸림.
- 명령어(칼리) : hping3 -1 희생자IP -d 100000
☞ -1 : ICMP 메시지를 보내겠다.
☞ -d : 데이터
☞ 100000 : data size
- 그러나 희생자의 컴퓨터는 인터넷이 잘 됨.
☞ 요즘은 컴퓨터 처리력이 굉장히 좋아 모든 패킷을 처리해줌.
- 보안 방법
☞ ping 메시지의 크기가 클 이유가 없으니 OS단에서 길이를 정의해줌.
☞ IDS/IPS 사용
6.3) SYN Flooding
- SYN을 넘치게 함. 즉, 클라이언트가 서버의 SYN Queue를 overflow 시켜서 서버를 오동작 시키거나 crash 시킴.
- 명령어(칼리) : hping3 서버IP(희생자) -a 존재하지않는IP -p 80 -S -i u10000
☞ 존재하지않는IP : ping으로 아무곳이나 보내보고 답이없는 곳을 설정.
☞ -p : protocol
☞ -S : SYN 메시지
☞ -i : interval / u10000 : 1초에 약 10개정도
- 하지만 현실적으로는 엄청 많은 SYN 메시지를 전송해야하기때문에 많은 공격자가 해야 효과적임.
- 보안 방안
☞ ACK 패킷이 돌아오는 시간을 체크하여 오래 걸리면 Queue를 자동으로 비움.
☞ SYN 패킷의 간격을 살펴 미친듯이 들어오면 차단.
6.4) TearDrop
- 눈물처럼 똑똑 떨어지게 하는 공격.
- 클라이언트가 패킷을 세그멘테이션 시 offset(쪼개어지는 숫자)을 어긋나도록 수정.
- 대상 서버가 세그멘테이션 된 패킷을 재조합 하지 못하도록 하여 장애를 발생시키는 공격 기법.
- 심하면 블루 스크린이 뜸.
[출처 : http://www.netforpro.ir/]
- 하지만 이 또한 현재 버전의 OS들에선 불가하다 쪼개어지는 offset이 다르면 버리도록 설정되어있음.
- 보안 방안
☞ System Security upgrade
☞ Using IDS/IPS
6.5) Land Attack
- Loop를 만들어서 뻗게함.
- Src.IP와 Dst.IP를 같게 만들어 루핑이 발생하며 가용성 저하됨. => SYN Flooding
- 명령어(칼리) : hping3 dst.IP -a src.IP -s src.port -p dst.port -S -c 100
☞ -c : count
- 보안 방안
☞ src.IP와 dst.IP가 같은지 체크.
☞ Using IDS/IPS
7.1) DrDoS (Distributed Reflection DoS : 분산 반사 서비스 거부 공격)
7.2) Smurf Attack
- 공격자가 ICMP를 조작하여 한번에 많은 양의 ICMP Reply를 희생자에게 보내는 공격.
- 공격은 A가 했지만 B가 죽음.
- ICMP Request 메시지의 src.IP를 희생자의 IP로 조작. 그 후 브로드캐스트로 전송.
- 전체로부터의 ICMP Reply 메시지는 희생자의 IP를 dst.IP로 설정 후 전송됨.
- 전체 망에 20대가 있을 시, 공격자가 100개의 Request를 보내도 희생자는 2000개의 Reply를 받음.
☞ 파급력이 엄청남.
- 명령어 : hping3 브로드캐스트IP -a 희생자IP --icmp --flood
- 보안 방안
☞ dst.IP가 브로드캐스트인지 확인.
☞ Using IDS/IPS
7.3) NTP DrDoS Attack
- 공격자가 NTP 서버의 MONLIST 취약점을 이용해 공격 대상에게 DNS응답을 보내는 공격.
- NTP 서버는 시각정보를 알려주는 서버임.
- MONLIST는 목록을 조회한 최대 600여개의 호스트들을 저장해놓은 목록임. 고로 MONLIST조회요청을 하면 600개의 목록이 날라옴.
- 이 때, src.IP를 희생자의 IP로 적으면 MONLIST가 희생자의 컴퓨터로 가니 파급력이 엄청남.
- NTP 서버 설치 (CentOS)
# yum -y install ntp
# vi /etc/ntp.conf
☞ restrict default와 restrict -6 ... 두 줄을 주석처리함.
☞ 위의 두 줄은 몬리스트 취약점을 막아주는 설정이기에 실습을 위해 주석처리.
# service ntpd restart
- 해킹에 필요한 패킷 수집 (칼리)
# wireshark : 켜놓기
# ntpdc [NTP 서버의 IP]
ntpdc > monlist : 몬리스트 조회
wireshark에서 ntp && src.ip == 칼리IP && dst.ip == NTP 서버 IP 인 패킷하나를 export함.
- 공격용 패킷 제작 (칼리)
: src.ip를 희생자의 ip로 변경.
# tcprewrite -i 정상패킷파일이름 -o 공격용패킷이름 --srcipmap 기존src.ip/32:희생자ip/32 -C -v
☞ --srcipmap : src.ip 변경
☞ /32 : subnet mask. 원래는 24로 해야하나 오류가 나기에 32로 사용.
☞ -C : 패킷 헤더 길이 재계산
☞ -v : 진행메시지 출력
- 패킷 재생=전송 (칼리)
# tcpreplay --loop=패킷재생횟수 --intf1=eth0 공격패킷이름
- 보안 방안
☞ NTP 서버에서 monlist를 사용하지 않거나 관리자만 사용가능하도록 재정의
☞ Using IDS/IPS
8.1) DDoS
▣ DDoS란?
- DDoS는 DoS 공격보다 효과적이며 강력하게 공격하기 위한 방법.
- 여러대의 장비를 이용하여 다중공격을 함.
▣ DDoS 종류
- 네트워크 resource 고갈형 공격
- 호스트 resource 고갈형 공격
8.2) Slowloris DoS
- 호스트 리소스 공격에 해당.
- 약점을 이용. (약점 : 고칠수없음 / 취약점 : 고칠수있음)
- 아파치 웹서버를 겨냥.
- Low Rate DDoS(저대역 DDoS : 패킷발생률이 초당 2000~3000 사이로 적음)
- 정상적인 get 접속 요청 후 마지막에 하나의 CR-LF(개행문자)를 하지 않음. --> 정상은 원래 2번 CR-LF를 전송
- 서버에서 마지막 개행문자가 올때까지 대기한 후 timeout에 도달하거나 무의미한 헤더를 지속적으로 전송.
- 계속해서 하나의 CR-LF가 담긴 패킷을 전송할 시, 다른 사람이 서비스 제공을 받지 못함.
☞ CR-LF == X-a: b
- 대응 방법
☞ apache만을 목표로 하기 때문에 다음과 같은 대응을 할 수 있음.
☞ Timeout 설정 변경(가장 현실적인 방법) : 연속된 패킷이 설정된 시간내로 오지 않을 경우 종료.
☞ netstat -na | grep ESTABLISHED : 연결이 많은 IP에 대해 차단.
: 공격진행시 로그는 남지 않아도 netstat으로는 보이나 IP 계속 바꾸면 우회 가능.
☞ iptables의 connlimit(커넥션 제한) 설정
: 이 또한 위와 같은 방법으로 우회 가능.
i2sec 대구지점 23기 수료생.
'해킹&보안 > 네트워크 해킹&보안' 카테고리의 다른 글
[D+9] Stack Buffer Overflow (1) (0) | 2017.04.12 |
---|---|
[D+8] 네트워크 해킹과 보안 (5) (0) | 2017.04.03 |
[D+8] 네트워크 해킹과 보안 (4) (0) | 2017.04.03 |
[D+7] 네트워크 해킹과 보안 (3) (0) | 2017.03.30 |
[D+6] 네트워크 해킹과 보안 (2) (0) | 2017.03.29 |