DoS(Denial of Service) 정의

  • DoS공격은 상대방 서버가 서비스를 하지 못하도록 하는 서비스 거부 공격
  • 공격대상이 수용할 수 있는 능력 이상의 정보나 사용자 또는
    네트워크의 용량을 초과시켜 정상적으로 작동하지 못하게 함
  • 공격의 종류에는 특정 프로그램의 취약점을 이용한 공격, 네트워크
    특성상 발생하는 취약점 공격, 무차별 공격, 서버 및 시스템 마비 등
  • 분산 환경에서 발생할 수 있는 DoS공격을 DDoS(Distributed DoS)라 함












DoS 공격 유형


<출처: University of TORONTO>

1) Ping of Death

- Ping of Death 공격의 기본은 Ping을 이용하여 ICMP 패킷을 정상적인 크기보다 아주 크게 만드는 것

 이렇게 만들어진 패킷은 네트워크를 통해 라우팅되어 공격 네트워크에 도달하는 동안 아주 작은 조각(fragment)이 됨

 자세한 사항은 (http://kkn1220.tistory.com/76 참고)

 공격 대상 시스템은 이렇게 작게 조각화된 패킷을 모두 처리해야 하므로 정상적인 Ping의 경우보다 많은 부하가 걸림

- RFC-791 Internet Protocol에 따르면 헤더를 포함한 IP 패킷의 최대길이는 65,535(=16비트-1=2^16-1)까지로 제한되어 있다.

Ping of Death

 결국 공격자가 65,535보다 큰 사이즈의 패킷을 보내게 되면 수많은 조각이 생성되고 해당 Buffer가 overflow되어, 대상 시스템 및 서버는 충돌이 일어난다.

 통상적으로 IP 패킷의 헤더는 특별한 옵션이 없으면 20바이트를 보내고, ICMP ECHO request 패킷은 8바이트의 ICMP 헤더를 사용하기 때문에 실제 데이터 길이의 최대값은 65,507(65,535-20-8)바이트가 된다. 하지만 요새 시스템은 비정상적으로 큰 ICMP 데이터를 발생시키지 못하도록 하기 때문에 많이 막혀있다.

 기본적인 ping을 살펴보자

192.168.100.3(window)에서 192.168.100.5(target-ubuntu)로 ping을 보내고 kali에서 tcpdump로 5번을 지켜보았다.
귀찮아서 3번에 tcpdump를 안한것은 아니다.

기본적으로 ping은 32바이트(window)를 보낸다.(리눅스의 경우 56) 
그렇기 때문에 위에서 설명했듯이 32+20(ip header)+8(request packet) 총 60바이트의 길이가 출력될 것이다.

즉, 총 length는 60을 확인할 수 있다.


앞서 요새 많이 막혔다고 하는데 실제로 다음과 같다.

실제 보낼 수 있는 데이터 길이의 최대값은 65,507(65,535-20-8)바이트이다.

윈도우의 경우 65500을 넘지 못한다.

kali의 경우 65507까지만 허용한다.

65,507을 넘을 경우 허용하지 않는다.

jolt2라는 툴을 사용하면 된다고 몇 개의 다큐먼트들이 있지만 다음에...(윈도우 NT, 2000 시스템 가능 확인 필요)

2) SYN Flooding (그림 출처: wiki)

- SYN flooding이란 SYN을 넘치게 하는 것을 뜻한다. 즉 클라이언트가 서버의 SYN Queue를 overflow시켜 서버를 오동작하거나 충돌시키는 공격이다.

위의 그림은 정상적인 3-way handshake 내용이다. 

1. 클라이언트 alice는 서버에 접속을 요청하는 SYN패킷을 보낸다. 이 때 상태는 SYN/ACK 응답을 기다리는 SYN_SENT이다.

2. 서버는 SYN요청을 받고 alice에게 요청을 수락한다는 ACK와 SYN flag가 설정된 패킷을 발송하고 alice의 ACK응답을 기다린다. 이때 서버의 상태는 SYN_RECEIVED이다.

3. alice는 서버에 ACK를 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 된다. 서버의 상태는 ESTABLISHED이다.

위의 그림은 SYN flood공격 모습이다. 

1. attacker는 스푸핑된 ip를 가지고 서버에 다수의 패킷을 보낸다. 하지만 ACK를 응답하지 않기 때문에 이를 half-opened라 부른다.

2. 서버는 스푸핑된 ip가 네트워크에 존재하지 않기 때문에 SYN/ACK패킷을 보낼 수 없고, 서버의 자원은 계속 소비하게 된다.
즉 SYN Queue의 내용은 계속 유지된다.
3. 합법클라이언트 alice는 서버에 연결을 시도하지만 거절당하게 된다.

4. attacker는 무한으로 보내게 되면 결국 서버의 Queue는 추가만 되기 때문에 overflow가 발생하게 된다.


공격: kali linux(192.168.100.14) -> target pc(192.168.100.5), fake ip(192.168.100.50)

위는 kali에서 기본적으로 제공하는 hping3으로 192.168.100.5에 192.168.100.50이라는 src ip로 80번의 목적지 포트에 SYN패킷을 초당 10개씩 보내라는 것을 의미한다. (hping3 소개: http://kkn1220.tistory.com/99 참고)

tcpdump로 확인 결과 flag가 S만 출력되는 것을 확인할 수 있다.


3) land attack (그림 출처: http://docstore.mik.ua/orelly/networking_2ndEd/fire/ch04_08.htm)

- 패킷을 전송할 때 출발지 IP주소와 목적지 IP주소 값을 타겟의 IP주소 값으로 똑같이 만들어서 타겟으로 보낸다.

- 시스템은 처음 시도된 SYN에 대한 reply 패킷을 출발지 IP 주소값을 참조하여 그 값을 목적지 IP주소 값으로 설정하여 패킷을 보낸다. 그러나 이 값은 자기 자신의 IP 주소값이기 때문에 네트워크 밖으로 나가지 않고 자기 자신에게 돌아오며 land 공격은 동시 사용자를 점유하는 것 동시에 CPU부하 또한 올리게 된다.

Figure 4-9

공격: kali linux(192.168.100.14) -> target pc(192.168.100.5)

kali에서 기본적으로 제공하는 hping3을 가지고 출발지ip와 목적지ip를 타겟ip로 설정하고 포트를 100으로 설정하였다.

첫 패킷을 확인하면 192.168.100.5.100 > 192.168.100.5.100 을 확인할 수 있는데 land attack 패치 이후 이후 패킷에서는 src port가 자동 증가되어 land attack에 피해를 입지 않는 것을 확인할 수 있다.


4) smurf attack (그림 출처: https://blog.cloudflare.com/deep-inside-a-dns-amplification-ddos-attack)

1. smurf공격은 공격자가 타겟의 IP로 스푸핑한 후, 타겟이 속해 있는 broadcast network로 broadcast 요청을 보낸다.

2. ICMP request를 수신한 컴퓨터들은 타겟에 reply 패킷을 보낸다.

3. 대량의 ICMP reply를 수신한 타겟은 과부하 상태가 된다.

Deep Inside a DNS Amplification DDoS  
Attack

위의 그림을 보면 공격자는 라우터에 타겟의 주소 9.9.9.9로 스푸핑하여 요청한다. 라우터는 각각 디바이스에 타겟의 IP로 request요청을 한다. 결국 각각의 디바이스들은 타겟에 reply 패킷을 보내게 된다.

hping3 [broadcast ip] -a [target ip] [packet type] --flood

kail#hping3 192.168.100.255 -a 192.168.100.5 --icmp --flood

kali에서 tcpdump결과 5번 target에서 255번으로 request를 하였고, 실제로 8번과 6번이 현재 연결되어 있는데 reply응답을 한 것을 확인할 수 있다.

실제로 위 명령을 실행한 결과 나의 컴퓨터는 컨트롤 c로 멈추기 전 동안 정상적이지 못했다... 직접 해보시길.......


teardrop 업데이트 필요

Spoofing

- 스푸핑(Spoofing)이란 '속이다'라는 의미를 가짐

IP address, host name, Mac address 등 여러가지를 속일 수 있고, 스푸핑은 이런 속임을 이용한 공격을 총칭

인터넷이나 로컬에서 존재하는 모든 연결에 스푸핑이 가능하며, 정보를 얻어내는 것 이외에 시스템을 마비시키는 것이 가능

- 일반적으로 TCP/IP 네트워크 환경에서의 IP주소나 ARP주소 등으로 상대를 인식하는 취약성을 가지고 있기 때문에 내가 아닌

남으로 위장하는 것이 수월하고 현재까지도 문제점으로 지적되고 있다.


1. ARP 스푸핑 공격


1) B(Attacker)는 A와 C에게 자신의 MAC주소로 속이고 A와 C의 컴퓨터로부터 패킷을 받게됨

2) A와 C의 패킷을 읽은 후 정상적으로 상대방에게 패킷을 보내주면 A와 C는 정상적으로 주고 받았다고 생각하게 됨


아래는 arp spoofing 전의 A에서의 arp테이블이다.

공격자 B는 A에게 MAC주소를 속이게 된다.

A에서 다시 보면 B와 gateway의 맥주소가 같음을 확인할 수 있다.

이 후 A에서 전달되는 패킷은 B에서 확인할 수 있음을 보여주는 예이다.

사용 예는 http://kkn1220.tistory.com/72 를 참고하면 되겠다.


2. IP 스푸핑 공격

- IP 스푸핑은 시스템간의 신뢰 관계를 이용한 것으로 관계가 설정된 상태에서 클라이언트 시스템은 서버에 접속할 때, 자신의 IP주소로 인증을 하고 별도의 패스워드 없이 로그인이 가능하도록 만든 것이다.

 원격지 접속 서비스 중 r로 시작하는 rsh, rcp 등의 명령이 주로 IP기반으로 인증하는 서비스

- TCP/IP 프로토콜의 약점을 이용한 IP spoofing 방법

1) Sequence number guessing

2) SYN flooding

3) Connection hijacking

4) Connection killing by RST

5) Connection killing by FIN

6) SYN/RST generation

7) killing the INETD(네트워크데몬)

8) TCP window spoofing

일반적으로 IP Spoofing이란 1)Sequene number guessing, 2)SYN flooding 을 주로 사용


3. DNS 스푸핑 공격

- DNS 스푸핑은 DNS(Domain Name Server)에서 전달되는 IP 주소를 변조하거나 DNS의 서버를 장악하여 사용자가 의도하지 않은 주소로 접속하게 만드는 공격 방법

<정상적인 DNS 서비스> 출처: 한빛미디어

1) 클라이언트는 접속하고자 하는 도메인 이름에 해당하는 IP주소를 이미 설정된 DNS서버에 물어봄(DNS query packet전달)

2) DNS서버는 해당하는 도메인 이름에 대한 IP주소를 클라이언트에게 전달

3) 받은 IP주소를 가지고 클라이언트는 해당 웹서버로 접속


<DNS 스푸핑>

1) 클라이언트가 DNS 서버로 DNS query packet을 보내는 것을 확인(arp spoof 선행 작업 필요)

2-3) 공격자는 로컬에 존재하므로 DNS 서버보다 가까운 위치에 잇기 때문에 DNS 서버가 올바른 DNS response packet을 보내기 전에 위조된 DNS response packet을 클라이언트에 전달

4) 클라이언트는 공격자가 보낸 packet을 올바른 packet으로 인식하고 웹에 접속(DNS 서버 packet은 버림)

사용 예는 http://kkn1220.tistory.com/72 를 참고하면 되겠다.



'해킹 > 해킹' 카테고리의 다른 글

IP fragmentation을 이용한 공격  (0) 2016.02.12
DoS(Denial of Service) 소개 및 공격유형  (0) 2016.02.12
스니핑 도구 dsniff 소개  (0) 2016.02.02
스니핑 도구 tcpdump 소개  (0) 2016.02.02
스니핑(sniffing) 소개  (0) 2016.02.02

Dsniff

- Dsniff는 스니핑을 위한 자동화 도구이다. 많이 알려진 툴이며, 단순한 스니핑 도구가 아니라 스니핑을 위한 다양한 툴이 패키지처럼 만들어져 있다.

- 무차별 모드에서의 패킷을 캡쳐할 수 있는 특징을 가진다.


- Dsniff 가 읽어낼 수 있는 패킷의 종류

-> ftp, telnel, http, pop, nntp, imap, snmp, ldap, rlogin, rip, ospf, pptp, ms-chap, nfs, yp/nis +, socks, x11, cvs, IRC, ATM, PostageSQL, Citrix ICA, sql, auth 등


우분투에서는 

$sudo apt-get install dsniff (칼리는 기본 제공)

사실 설치 방법은 복잡하다.

LIBNET 설치 -> LIBPCAP 설치 -> DB 라이브러리 설치 -> LIBNIDS 설치 -> OPEN SSL 설치 -> DSNIFF 설치

굳이 우분투에 설치하고 싶으신 분들은 

(https://hplearn.co.kr/upload/lecture_pds/main3%20-%20session%201%20-%20Dsniff%EB%A5%BC%20%EC%9D%B4%EC%9A%A9%ED%95%9C%20password%20hijacking%20%EC%8B%A4%ED%97%98%201%20-%20dsniff%20%EC%84%A4%EC%B9%98-1.pdf) 참고



Dsniff 설치 시 설치 되는 툴


filesnarf     NFS 트래픽에서 스니프한 파일을 현재 디렉토리에 저장 

macof        스위치를 허브와 같이 작동하게 하기 위하여 임의의 MAC 주소로 스위치의 MAC 테이블을 오버플로우 시킴 

urlsnarf     HTTP의 모든 URL을 가로챔 

mailsnarf    SNMP와 POP을 스니프하여 이메일을 볼 수 있게함 

msgsnarf    채팅 메시지를 스니핑 

tcpkill       탐지할 수 있는 TCP 세션 끊음 

tcpnice      ICMP source quench 메시지를 보내 특정 TCP 연결을 느리게 만든다.  

(속도가 빠른 네트워크에서 스니프 할 때)

arpspoof     ARP 스푸핑 공격 

dnsspoof    DNS 스푸핑 공격 


옵션

Usage: dsniff [-cdmn] [-i interface | -p pcapfile] [-s snaplen]

              [-f services] [-t trigger[,...]] [-r|-w savefile]

              [expression]


-d: debugging mode 사용

-m: 자동 프로토콜 탐지 기능 사용

-n: IP이름을 풀이 하지 않음

-i: interface: 사용할 장치 지정

-w: savefile: 스니핑한 결과를 지정한 이름으로 저장



위의 기능 중 전부 하기에는 시간적 문제 및 귀찮아서 그럴싸한 몇 가지를 테스트해보았다.


Macof - LAN에 random MAC addresses에 트래픽을 계속 발생하게 하여 스위치 메모리를 고갈 시키는 것

macof <-s 출발지> <-d 목적지> <-e 목적지 하드웨어주소> <-x 출발포트> <-y 목적지포트> <- i 장치> <-n 회수>

예) macof -d 192.168.100.5(희생자 IP) -i eth0    (예에서는 그냥 ip로 어떤 것을 의미하는지 보여주기 위함)



URLsnarf - CLF(Common Log Format) 를 사용하여 HTTP 패킷을 가로챈 후 현재 클라이언트가 사용하는 URL을 알려줌

urlsnarf <-i 인터페이스> <-p pcap파일> <-v 자세히 pattern[URL 정규 표현식 지정]>
예) urlsnarf -i eth0        //host지정 시 host <ip주소> 

//test에서는 한 명의 희생자밖에 없기 때문에 지정 안함 

192.168.100.5에서 접속하는 url 획득


arpspoof - arpspoof는 양 서버사이에서 스니핑하고자 하는 서버인 것처럼 MAC을 위조하여 트래픽을 포워딩하는 것인데 실제로 해킹을 할 때 arpspoof를 마치 게이트웨이 인듯 사용하는 경우가 많다.

(http://kkn1220.tistory.com/32)를 참고하면 arpspoof를 한 것을 확인할 수 있다.

다른 방법으로는 다음과 같다.


희생자 우분투(192.168.100.5)에서 arp-a를 입력했을 때 공격자 14번과 1번 게이트웨이의 맥주소는 다른 것을 확인할 수 있다.

하지만 arpspoof를 하게 되면 다음과 같이 14번은 1번이 마치 자신의 맥인것 마냥 속이게 되며 패킷을 본인에게 향하게 한다. 

이를 악용하여 tcpdump라든지 기타 방법을 사용하여 패킷을 확인할 수 있다.


arpspoof <-i 인터페이스> <-t 타겟> host




dnsspoof - 말그대로 DNS 주소를 속이는 것이다.

이를 위해 위에서 했던 것을 토대로 전체적인 시나리오를 기반으로 진행해보겠다.


우선 아파치 서버 페이지를 수정하겠다. 기본은 it works 화면임

(vi /var/www/index.html 수정하면됨)

아파치 서버가 실행이 되지 않았을 수도 있기 때문에 실행하자

#service apache2 restart

아래의 화면은 kali 공격자의 index.html 페이지이다.

1. arpspoof   

#arpspoof -t <target ip> <gateway ip>

#arpspoof -t 192.168.100.5 192.168.100.1

1번 쉘을 열고 위의 명령어 실행


2. IP forwarding

#echo 1 > /proc/sys/net/ipv4/ip_forward

#fragrouter -B1

2번 쉘을 열고 위의 명령어 실행


3. fake host file 작성

#vi test

[attacker IP]       [Domain]

192.168.100.14    *.naver.com

vi 편집기 내용


4. dnsspoof

#dnsspoof -f <filename>

#dnsspoof -f test

3번 쉘을 열고 위의 명령 실행


5. target pc에서 naver.com 접속

아래의 화면과 같이 naver.com에 접속하였음에도 불구하고 공격자의 index.html에 접속하는 것을 확인할 수 있다.

사이트를 진짜 사이트처럼 복제한 후 악용할 수 있다.


'해킹 > 해킹' 카테고리의 다른 글

DoS(Denial of Service) 소개 및 공격유형  (0) 2016.02.12
스푸핑 (Spoofing) 소개  (0) 2016.02.11
스니핑 도구 tcpdump 소개  (0) 2016.02.02
스니핑(sniffing) 소개  (0) 2016.02.02
shodan 소개  (0) 2016.02.01

TCP Dump

- 가장 일반적으로 사용하는 스니핑 도구로 불법적인 느낌, 해킹이라는 느낌보다는 관리자적인 느낌이 강한 도구이다.

처음부터 스니핑을 위한 도구로 개발된 것이 아니라 네트워크 관리를 위해 개발된 툴이며 Snort라는 IDS의 기반 프로그램이기도 하다.


man page에서 Tcpdump의 정의를 잠깐 살펴보고자 한다.

Tcpdump prints out a description of the contents of packets on a network interface that match the boolean expression; the description is preceded by a time stamp, printed, by default, as hours, minutes, seconds, and fractions of a second since midnight. It can also be run with the -w flag, which causes it to save the packet data to a file for later analysis, and/or with the -r flag, which causes it to read from a saved packet file rather than to read packets from a network interface. It can also be run with the -V flag, which causes it to read a list of saved packet files. In all cases, only packets that match expression will be processed by tcpdump.


뭐 내용을 잠깐 보면 Tcpdump는 boolean 표현식을 만족하는 네트워크 인터페이스의 패킷의 내용을 출력하고 파일로 저장하는 w플래그나 저장된 패킷으로부터 읽어들이는 r플래그 등이 존재한다는 것을 확인할 수 있다.


설치

Tcpdump는 libpcap 라이브러리를 사용하는데 칼리에서는 기본적으로 tcpdump가 설치되어 있고, 리눅스의 경우

apt-get install tcpdump, apt-get install libpcap 으로 필요 라이브러리를 설치하면 되는데 자세한 설치 방법은 칼리를 사용할 것이기 때문에 제외하도록 한다.


옵션(자주 쓰이는 것만 나열 (자세한 것은 man page 참고)


예제

To print all packets arriving at or departing from sundown:

-> tcpdump host sundown        

 //sundown host의 출발 도착 패킷 출력


To print traffic between helios and either hot or ace:

    -> tcpdump host helios and \( hot or ace \)    

//helios와 hot, ace에서 발생하는 패킷 출력


To print all IP packets between ace and any host except helios:

    -> tcpdump ip host ace and not helios        

//helios를 제외한 ace와 다른 host간 ip 패킷 출력


To print all traffic between local hosts and hosts at Berkeley:

     -> tcpdump net ucb-ether       

//local host와 berkeley host사이에서 발생하는 모든 트래픽 출력


To print all ftp traffic through internet gateway snup: (note that the expression is quoted to prevent the shell from (mis-)interpreting the parentheses):

    -> tcpdump 'gateway snup and (port ftp or ftp-data)'    

//gateway snup을 통한 모든 ftp 패킷 출력


To print IP packets longer than 576 bytes sent through gateway snup:

    -> tcpdump 'gateway snup and ip[2:2] > 576'    

//snup을 통과하는 패킷 중 576byte 이상 패킷 출력



'해킹 > 해킹' 카테고리의 다른 글

스푸핑 (Spoofing) 소개  (0) 2016.02.11
스니핑 도구 dsniff 소개  (0) 2016.02.02
스니핑(sniffing) 소개  (0) 2016.02.02
shodan 소개  (0) 2016.02.01
해킹의 두번째걸음. 스캐닝(scanning)  (0) 2016.01.28

- 스니핑 정의

-> 'sniff'는 사전에서 찾아보면 '코를 킁킁거리다'라는 의미를 가진다. 코를 킁킁거리듯이 정보를 데이터 속에서 찾는 것이라고 생각하면 된다.

-> 스니핑 공격은 막는 것도 어려우며, 탐지 역시 쉽지 않다. 스니핑 공격을 수동적 공격이라고도 말하는데, 그 이유는 공격 시 툴을 설치해놓은 상태로 충분하기 때문이다.

-> 랜에서의 스니핑은 promiscuous 모드에서 작동한다. 랜 카드는 설정된 IP 주소값과 고유한 MAC(Media Access Control) 주소 값을 가지고 있으며 자신의 랜카드에 들어오는 프로토콜 형식에 따른 전기적 신호의 헤더부분, 즉 주소 값을 인식하고 자신의 버퍼에 저장할지를 결정한다. 그러나 스니핑은 자신이 가지지 말아야 할 정보까지 모두 받아들이는 것이다. 이렇듯 자신의 주소값을 무시하고 모든 패킷을 받아들이는 상태를 promiscuous 모드라고 한다.


그림출처: 안랩


- 인터페이스를 promiscuous 모드로 전환하기

$sudo ifconfig eth0 promisc

<전환 전>


<전환 후>


- 인터페이스를 원복시키기

$sudo ifconfig eth0 -promisc

<원복>


관련 Tools


1. TCP Dump

http://kkn1220.tistory.com/70 참고

2. Dsniff

http://kkn1220.tistory.com/72 참고




'해킹 > 해킹' 카테고리의 다른 글

스니핑 도구 dsniff 소개  (0) 2016.02.02
스니핑 도구 tcpdump 소개  (0) 2016.02.02
shodan 소개  (0) 2016.02.01
해킹의 두번째걸음. 스캐닝(scanning)  (0) 2016.01.28
maltego(footprinting tool) 소개  (0) 2016.01.28

shodan은 검색 엔진과 비슷한 형태로 보일 수 있으나
정확하게 말하자면 특정 웹서버나 webcam 등과 같은 정보를 수집하고 그 결과를 가져오는 것이라고 볼 수 있다.


https://www.shodan.io 에 접속을 하면 아래와 같은 화면을 볼 수 있다.


제공하는 기능은 많다. 웹사이트를 이용하여 취약점을 확인하거나, API를 이용하는 방법, exploit 등 방법에 대해 알면 알수록 많은 기능을 사용할 수 있다. 이번 포스팅에는 웹사이트를 이용한 단순 소개로 한정짓는다.

explore를 눌러보면 인기있는 searches에 대해 볼 수 있다. 역시 캠에 대한 빈도수가 가장 높았다.


유료회원의 경우 검색할 수 있는 쿼리 개수도 많아지고 customizing 할 수 있는 장점이 있지만, 돈이 없어서..
여하튼 회원가입을 하고 이용해보았다.




웹 사이트를 이용한 검색으로는

다음과 같을 수 있다.


city -  도시를 한정하여 검색

country - 국가를 한정하여 검색

hostname - 호스트 네임 매칭 검색

os - 특정 OS 검색

port - 특정 포트 검색


검색 방법은 다음과 같다.

예) apache country:KR -> apache를 사용하는 것 중에 한국에 한정하여 검색

예) apache country:KR city:"Seoul" -> 위와 동일하지만 서울에 한정하여 검색

예) country:KR product:"samsung"



현재 가장 인기있는 검색어는 webcam이다. 

webcam country:KR의 결과내용이다.




해당 IP의 정확한 위치 및 open port등 또한 확인할 수 있다.


각각을 눌러보면 id와 pw를 입력하여야 한다.

하지만 삼성테크윈 제품으로 한정하여 검색하였을 때 디폴트 id와 pw를 유지하고 있는 곳이 많다는 것을 확인할 수 있었다.

또한, 그런 id, pw또한 없는 곳도 있었다.


위의 사진은 편의점에 불과하지만 개인용 주택이나 사무실의 경우 사생활 침해를 유발할 수 있다.




아래는 metasploit을 이용한 것인데 자세한 것은 추후 진행하도록 하겠다.


아래는 kali에서 실행하였다.


#msfconsole


msf> show auxiliary  (tab 기능 제공됨)



shodan search를 확인할 수 있다.


msf> use auxiliary/gather/shodan_search   (tab 기능 제공됨)

msf> show options


api key는 메일로 등록 시 발급받은 api key를 등록해주면 된다.


msf> show options

msf> set query <query식>        //쿼리식 확인 필요


msf> run


db저장 방법, 쿼리식 종류 및 사용법 등 공부 필요


'해킹 > 해킹' 카테고리의 다른 글

스니핑 도구 tcpdump 소개  (0) 2016.02.02
스니핑(sniffing) 소개  (0) 2016.02.02
해킹의 두번째걸음. 스캐닝(scanning)  (0) 2016.01.28
maltego(footprinting tool) 소개  (0) 2016.01.28
MITM 공격을 위한 ettercap 소개  (0) 2016.01.21

풋프린팅이 정보를 담고 있는 공간을 찾는 행위라면 스캐닝은 잠재적인 출입구가 될 수 있는 문이나 창문을 찾는 것과 같다.

풋프린팅 정보는 (http://kkn1220.tistory.com/61 참고)


-스캔의 개념

-> 스캔은 서비스를 제공하는 서버의 작동 여부와 제공하고 있는 서비스를 확인하기 위한 것

   TCP 기반의 프로토콜은 기본적으로 질의(Request)를 보내면 응답(Response)을 보냄

-> 스캐닝은 이러한 기본적인 메커니즘에 기본하는 것으로, open port, 제공 중인 서비스, 동작중인 데몬 버전, os version,   취    약점 등 다양한 정보를 얻는 것이 가능


- 시스템 활성화 여부 결정

- Ping & ICMP Scan

- ping은 네트워크와 시스템이 정상적으로 작동하는지 확인하기 위한 간단한 유틸리티

- ICMP(Internel Control Messaging Protocol)를 사용

- 각각의 네트워크는 고유한 ping이 존재하며, 일반적으로 알려진 ping은 TCP/IP 네트워크에서의 ping을 말함


윈도우에서의 ping


linux에서의 ping

- ping은 결국 ICMP의 Echo request(type 8), reply(type 0)을 따름

 즉, ping 도구는 ICMP Echo Request  메시지를 전송하여 목적지시스템으로부터 ICMP Echo Reply 메시지로 응답을 받  는데 걸린 시간을 측정하며 네트워크 연결을 검사 할 수 있다.


ICMP 스캔

-> ICMP를 이용한 스캔 방법으로는 다음의 네 가지를 생각 할 수 있다.

- Echo Request(type 8)와 Echo Reply(type 0)을 이용한 방법

- Timestamp Request(Type 13)와 Timestamp Reply(Type 14)를 이용한 방법

- Information Request(Type 15)와 Information Reply(Type 16)를 이용한 방법

- ICMP Address Mask Request(Type 17)와 ICMP Address Mask Reply(Type 18)를 이용한 방법


Timestamp Request는 원격지 시스템의 현재 시간을 알아보기 위한 패킷임
Timestamp 패킷은 송신자가 패킷을 받은 시간(Originate Timestamp)과 수신자가 패킷을 받은 시간(Receive Timestamp), 송신자가 수신자에게 전송하는 동안 걸린 시간(Transmit Timestamp)으로 공격대상의 현재 시스템 시간을 알 수 있다.

하지만 Timestamp Request 패킷에 Reply 패킷을 돌려보내오는 시스템이 시간만을 알려준다고 생각할 수는 없는데 상대 시스템이 Reply 패킷이 돌아온다는 것은 상대 시스템이 활성화 되어 있음을 말함


Information Request와 Reply 패킷은 메인 프레임의 터미널과 같이 부팅할 때 자신의 디스크가 없는 시스템에 스스로 설정할 수 있도록 하는 패킷으로, 자신의 네트워크를 찾기 위해 개발됨

기본 목적은 RARP, Bootp, DHCP와 같은 프로토콜과 같으나 다른 프로토콜을 이용한 방법에 비해 원시적

Timestamp 패킷과 마찬가지로 죽은 시스템이 Reply패킷을 보내지 않음


ICMP Address Mask Request와 Reply패킷은 Information Request 패킷과 같이 터미널이 부팅 될 때 자신이 속해 있는 네트워크의 서브넷 마스크를 알기 위해 보내는 프로토콜

마찬가지로 Reply 패킷을 돌려보내오는지 확인하면서 활성화 여부 확인


- ARP(Address Resolution Protocol) 호스트 탐색

ARP는 IP 주소값으로 MAC 주소값을 알아내는 프로토콜이다

예) #arp-scan 192.168.100.0/24


대상시스템이 원격에 위치한 네트워크일 경우 실효성이 떨어지는 ARP탐색보다는 ICMP또는 TCP/UDP 탐색 방법을 사용하여야 함


- 포트스캐닝

- 네트워크매퍼(nmap): 호스트와 서비스 검색과 관련된 도구

nmap은 상당히 상당히 강력한 도구이다. 기능도 엄청 많다.

(자세한 사항은 kkn1220.tistory.com/103 참고)

스캐닝 옵션 (192.168.100.5는 현재 우분투 test 대상)

-sT: TCP connect() scan: TCP scanning의 가장 기초적인 형태로 connect()함수를 사용해서 모든 포트에 대해 스캔


-sS: TCP SYN scan: full TCP접속을 하지 않으므로 "half-open" 스캐닝이라 한다. 하나의 SYN 패킷을 보내어 SYN|ACK 응답이 오면 그 포트는 listening 상태임을 나타내며, RST(ReSeT)응답이 오면 non-listener임을 나타냄

 이 기술은 하나의 패킷을 보내어 응답을 받으면 그 즉시 RST 패킷을 보내서 접속을 끊어버리기 때문에 로그를 남기지 않는 경우가 대부분임

-sF: Stealth FIN: SYN 패킷을 막아놓은 방화벽이나 패킷 필터 또는 Synlogger와 Courtney 같은 스캔을 탐지하는 프로그램들을 무사히 통과할 수 있다. open 포트로 FIN 패킷을 보내면 이 패킷을 무시하고, closed 포트로 보내면 RST 패킷이 온다.

-sX: Xmas Tree: FIN, URG, PUSH 코드 비트를 설정한 채 패킷을 보냄. RESET은 포트가 닫혔다는 것을 말해주며, 반응이 없는 것은 포트가 열려있음을 뜻함

-sN: Null scan: 어떤 코드 비트도 설정하지 않은 패킷을 보냄. RESET은 포트가 닫힌 것을 말하며, 반응이 없는 것은 포트가 열린 것을 뜻함

-sP: Ping scanning: 네트워크의 어느 호스트가 살아있는지를 알고 싶을 때 사용

그밖에 -sU; UDP scan, -sA: ACK scan, -sW: window scan, -sR: RPC scan 등 다양하다....

'해킹 > 해킹' 카테고리의 다른 글

스니핑(sniffing) 소개  (0) 2016.02.02
shodan 소개  (0) 2016.02.01
maltego(footprinting tool) 소개  (0) 2016.01.28
MITM 공격을 위한 ettercap 소개  (0) 2016.01.21
웹 퍼징 도구 DirBuster 소개  (0) 2016.01.19

http://www.paterva.com/web6/documentation/M3GuideGUI.pdf 
Paterva's Maltego 3 User Guide 요약


1. 서론

- 시기적절하고 정확한 정보에 접근하는 것은 정보시스템 보안에 중요한 역할이다. 이러한 정보들은 가능한 타겟에 대해 공격이나 방어에 있어 결정적인 정보이다.

     Full frontal attack은 항상 좋은 idea가 아니다. 어느 부분에서 보안이 취약한지에 대해 중요하고 이를 위해 믿을 수 있는 

     관계에서 타겟 주위의 가능한 많은 정보를 아는 것이 중요하다. 

     그러나 오늘날 정보들은 너무 다양하며 인간의 뇌로는 관계없는 데이터들에 대해 관계를 설정하는 것은 어렵다. 

    maltego는 시각적으로 데이터 조각사이의 링크(연관)를 보여주는 좋은 툴이다.


1.1 컨셉

- maltego는 클라이언트/서버 아키텍쳐를 이용하며, 특히 아래와 같은 인터넷 인프라구조의 데이터 조각 사이에 실제 세계 연관이나 관계를 결정하기 위한 데이터 수집을 목적으로 한다.

- 사람

- 그룹(social networks)

- 회사

- 기관

- 웹사이트

- 인터넷 인프라구조

- 도메인, 도메인네임서버(DNS) name, netblocks, ip addresses

- phrases

- affiliations

- documents and files

     maltego는 위의 관계를 쉽게 시각적으로 확인할 수 있다.


1.2 클라이언트 요구사항

1.2.1 운영체제(OS)

- window xp/vista/7 (11년도 기준), linux, osx (핵심: maltego는 모든 플랫폼에 설치된다)

1.2.2 소프트웨어 요구사항

- 자바 1.6이상 필요로함

1.2.3 하드웨어 요구사항

- Minimum (yuk): 2GB RAM, 2GHz, 64Kb Internet access, 1024×768 display.
  Recommended (yummy): 8GB RAM, Intel I7, 1Mb+ Internet access, 1920×1080 display.


1.3 서버 요구사항

1.3.1 운영체제(OS)

- maltego 서버는 vmware 이미지로 제공되늰데 virtual machine system이 가능한 OS면 다 됨

1.3.2 소프트웨어

- only software needed to run the Maltego VMWare images

1.3.3. 하드웨어

- Miminum: 2GB RAM, 2GHz CPU, 1Mb Internet access
 Recommended: 4GB RAM, Intel I7, >4Mb Internet access


2. 설치

2.1 다운로드

http://www.paterva.com/web6/products/download3.php 에서 윈도우용, mac용, linux용 클라이언트 다운로드



2.2 설치

2.2.1 윈도우

-위의 사이트에서 윈도우용으로 받은후 exe 파일 실행시켜서 보통 프로그램의 설치처럼 GUI로 다음 다음 형식으로 설치

2.2.2 linux

- debian(추천)

$cd <다운로드 받은 폴더>/Maltego

$sudo dpkg -i <maltegofile>.deb




- rpm

$cd <다운로드 받은 폴더>/Maltego

$sudo rpm -i <maltegofile>.rpm

- zip

$cd <다운로드 받은 폴더>/Maltego

$sudo unzip <maltegofile>.zip

(apt-get도 되는지 확인 필요) - 안됨



3. maltego 시작

$maltego를 치고 tab을 누르면 자동 완성이 되는데 실행하면 자바 경로패스가 설정되고 maltego가 실행됨

서비스를 이용하기 위해서는 반드시 로그인이 필요하다고 한다...
로그인을 무시하면 뭐 되는것처럼 보이지만 서비스를 이용할 수 없다...

실행하면 위자드가 실행되는데 계정 등록을 번거롭지만 하도록...
참고로 maltego에서 메일 인증을 받는데 스팸메일에서 확인하여야 한다.
구글에서는 스팸메일이 더보기에 있어서 한참을 기다렸는데 스팸메일에서 확인할 수 있다...





Ready...Set...Go!




3.1 새로운 그래프





- 위의 그림처럼 +버튼을 클릭하여 새로운 그래프를 만든다. (단축키는 Ctrl+T)


3.1.1 그래프 안에 개체(entity) 드래깅하여 넣기


참고로 앞서 언급한 로그인을 하지 않았을 경우 Palette에서 개체가 보이지 않으며 드래그 또한 안된다.


paterva.com 부분을 더블클릭하거나 F2키를 누르면 이름을 변경할 수 있다.
오른쪽 마우스를 클릭하면 여러 기능이 제공되는데 해당 포스팅에는 언급하지 않겠다.(사실 잘 모름)


3.1.2 기능 사용


아래는 paterva.com 을 대상으로 이메일 주소와 외부링크 기능을 사용해보았다. 뭐 물론 기능소개일뿐 아무 의미없다.


이 외 많은 기능이 있는데 시간 문제로 인해 각 기능에 대해서는 추후 진행하도록 하겠다.

또한 shodan과 maltego를 같이 이용할 수 있다는데 이 또한 추후 진행하도록 하겠다.

'해킹 > 해킹' 카테고리의 다른 글

shodan 소개  (0) 2016.02.01
해킹의 두번째걸음. 스캐닝(scanning)  (0) 2016.01.28
MITM 공격을 위한 ettercap 소개  (0) 2016.01.21
웹 퍼징 도구 DirBuster 소개  (0) 2016.01.19
해킹의 첫걸음. 풋프린팅(footprinting)  (0) 2016.01.19

시스템 활성화 여부를 결정하는 데 있어 ping을 통한 호스트 상태 확인이나 ARP 호스트 탐색을 하는 데 있어,

전에 사용했던 ettercap이 너무 좋아서 이번 기회에 소개하고자 한다.


ettercap은 MITM(이하 Man In The Middle attack, 중간자 공격) 을 위한 유용한 툴이다.

ettercap 홈페이지 (https://ettercap.github.io/ettercap/) 에 접속하면 위에 언급한 대로 MITM 공격에 적합하다고 나온다.


배포 지원:

데비안, 우분투, 페도라, 젠투, 맥 등

배포 미지원:

오픈수세, 솔라리스, 윈도우 계열


용도:
MITM공격: ARP poisoning, icmp redirection, port stealing 등

SSH암호화 스니핑

패킷 필터링

패스워드 수집  등


기본적으로 kali에서는 ettercap 을 지원한다. 하지만 그 밖의 OS에서 사용할 경우 필요 조건이 있다.


해킹 공부를 할 때 백트랙이나, 칼리로 테스트 하는 것이 편하다고 생각된다.


거두절미하고 ettercap을 실행하는 것은 텍스트 모드와 그래픽 모드로 크게 나뉜다.

(#ettercap -T : text mode, #ettercap -G : GUI 모드)


텍스트에 자신이 없기 때문에 나는 그래픽 모드로 수행하였다.

또한 우분투에서 이것 저것 설치하는 것이 귀찮기 때문에 kali 2.0에서 수행하였다. 

(예전에 1.09에서 했었는데 이전 어느 버전까지 있는지는 확인 필요)


뻔한 얘기지만, 역시 어플리케이션으로 실행하는 방법과 커맨드에서 실행하는 방법이 존재한다.




09. sniffing에 존재



실행하면 아래와 같은 화면이 출력된다.

디자인은 썩 나쁘지 않다고 생각된다.



스니프 탭에서 Unified sniffing 클릭

(unified는 cable을 통과하는 모든 패킷을 도청하는 방법이고, bridged는 두개의 네트워크 인터페이스를 이용할 때 한 인터페이스에서 다른 인터페이스로 트래픽을 전달할 때 사용)
(자세한 내용은 http://www-scf.usc.edu/~csci530l/downloads/ettercap.man.txt 참고 )



Unified sniffing을 클릭 후 Input의 네트워크 인터페이스에 eth0 클릭

아래와 같이 스니핑이 시작된다.


메뉴 탭 설명
1. Start: 스니핑을 시작하고 종료할 수 있다.

2. Targets: 현재 타겟, 타겟 설정, 프로토콜 설정
3. Hosts: 호스트 리스트 확인, 호스트 스캔, IPv6 스캔 
4. View: 연결상태 확인, 통계, 프로파일(감지된 호스트 ip나 MAC 정보 등)

5. Mitm: ARP poisoning, ICMP redirect, Port stealing, DHCP spoofing, NDP poisoning, Mitm 종료



6. Filtters: 필터를 load 하거나 종료

7. Logging: 모든 패킷이나 정보를 로깅, User message 로그 등
8. Plugins: 플러그인 관리/load

9. Info: help, about


Unified sniffing을 위에서 눌렀기 때문에 이미 1번의 스니핑은 시작되었다.

호스트 스캔을 하면 대역 대의 0에서 255번까지 스캔을 한다.

현재 나의 ip대역대는 192.168.100.0/255이다.

아래 그림과 같이 IP와 MAC 주소가 출력된다.




View에서 해당 IP의 프로파일 또한 볼 수 있다. (사진 생략)



실제 웹페이지에서 패스워드를 도청하였는데

http://kkn1220.tistory.com/32 를 참고하면 된다.




네트워크 해킹과 보안을 보던 중 DirBuster라는 tool을 알게 되었다.


자세한 내용: https://www.owasp.org/index.php/Category:OWASP_DirBuster_Project 참고

다운로드: http://sourceforge.net/projects/dirbuster/


DirBuster는 OWASP(The Open Web Application Security Project)에서 제작한 웹 퍼징 도구 중 하나이다.


kali에서는 DirBuster tool이 기본으로 설치되어 있다. (kali 설치: http://kkn1220.tistory.com/30 참고)



kali 이외 다른 곳에서 실행할 시


설치 및 사용

1. Unzip or untar the download file

2. $cd <download path & into the program directory>

3. java -jar DirBuster-(version)    //윈도우에서 실행 시 jar파일 더블클릭

4. directory-list-2.3-medium.txt 를 추천


필요사항

1. Dirbuster는 java 1.6 이상을 필요로 함



아래는 2015년 8월에 릴리즈한 kali 2.0 버전이다.

메뉴에서 03-WebApps에서 dirbuster를 선택하는 방법과


커맨드창에서 dirbuster를 실행하는 방법이 있다.



아래는 실행 화면이다.

방법은 간단하다.


Target URL에 취약 분석 할 사이트의 URL을 입력한다.



밑에 File with list of dirs/files에서 Browse 버튼을 눌러

/usr/share/dirbuster 경로에 wordlists폴더와 DirBuster-1.0-RC1.jar 파일이 존재한다.


방식으로 wordlists에 존재하는 사전(Dictionary) 대입 방식과 무차별 공격(Brute Forcing) 방식을 지원하게 된다.

wordlists에는 다양하게 존재하니 확인하는 것도 나쁘지 않을 듯(웹 서비스 사용 단어 리스트 포함)






쓰레드를 설정할 수 있는 데, 높은 값을 주면 성능 저하를 초래할 수 있다.

해당 디렉토리의 구조를 안다면 굳이 / 루트영역에서부터 시작할 필요는 없으며

File extension에는 php뿐만 아니라 jsp, html 등의 선택이 가능하다.



설정값을 주고 start하면 위의 그림처럼 실행이 되며 웹 취약점을 분석 할 수 있다.


+ Recent posts