이곳에서 작성되는 Network Hacking 기법들은 다른곳에서 악의적으로 사용할시에는 처벌을 받으실수도 있습니다 부디 악의적인마음으로 사용하지 마시고 이곳이 지식을 쌓는 장소가 되었으면 좋겠습니다 조심해서 사용해 주시길 바랍니다

GRE 스니핑


기본적으로 스니핑은 같은 네트워크 구간에서 가능하지만 외부에서 스니핑 불가능 한것도 아니다

다른 네트워크 구간이더라도 상대방의 라우터를 장악하고 조작하여 공격자에게 패킷이 오게끔 설정을 하게되면

공격자는 다른네트워크 구간에서 있더라도 내부네트워크를 스니핑을 할수있다


이것을 이용한것이 터널링을 이용한 방법이다


========================================================


터널링 이란

Passenger protocol을 Carrier protocol에 담아서 Encapsulation protocol로 감싸는것

Passenger protocolEncapsulation protocol로 덮어씌워 Carrier protocol로 전달한다


즉 네트워크 구간의 정보를 담아서 포장하여 타 네트워크로 전송하는것이다

이것이 사용되는경우는 IPv6 통신과 IPv4 통신시 양방향성 변환 지원이 아닌 단방향성 지원할때

많이 사용된다



※터널링은 비밀성 제공을 해주지않는다 중간에 패킷을 잡을시 내용이 다보인다


========================================================


터널링을 사용한 경우는 보통 라우터를 거쳐서 통신을 했을때 사용하지만

이번에는 같은 라우터를 사용하지만 다른 네트워크 대역에 존재하는 공격자가

내부망에 있는 통신을 Sniffing하는것을 시도해보겠습니다


이번에는 PBR의 경로 지정을 통해 다른네트워크의 정보를 공격자에게 오게 해보겠습니다





GRE 스니핑


실습 토폴로지



관리자 10.10.10.1이 서버쪽 20.20.20.0/24 대역과 통신하는것을 스니핑하기위해

공격자 30.30.30.1에서 GRE 터널링을 이용해서 공격해 보겠습니다


라우터의 정보를 변경하여 통신경로를 공격자 쪽으로 돌려야 함으로

SNMP서비스의 TFTP를 이용하여 공격하겠습니다


우선 라우터안에서 관리자와 서버가 통신하는 경로를 공격자에게 오게해야 하기 때문에


1.라우터의 공격자의 PC로 오게끔 할 설정 파일을 생성한다


2.TFTP를 이용하여 라우터에 정보를 전송한다

3.공격자가 받은 정보를 포워딩 해줘서 관리자와 서버가 통신이 원활하게 되게한다


==================================================================


설정 이후에 관리자가 통신을 시도하게 되면



공격자는 패킷을 분석하여 통신내용을 감청할수가 있다



이런식으로 다른 네트워크에 존재하더라도 만약 상대방의 라우터의 정보를 조작하여

타 네트워크끼리의 스니핑이 가능한것을 확인해 봤습니다


==================================================================


VPN

가상 사설망(영어: Virtual private network, VPN)은 공중 네트워크를 통해 한 회사나 몇몇 단체가 내용을 바깥 사람에게 드러내지 않고 통신할 목적으로 쓰이는 사설 통신망이다. 가상 사설망에서 메시지는 인터넷과 같은 공공망 위에서 표준 프로토콜을 써서 전달되거나, 가상 사설망 서비스 제공자와 고객이 서비스 수준 계약을 맺은 후 서비스 제공자의 사설망을 통해 전달된다.


멀리 떨어져 있는 네트워크들을 물리적으로 연결하는것이 아닌가상의 하나의 네트워크로 구축하는 기술입니다 즉 본사와 지사가 멀리 떨어져 있을때 케이블을 연결하여 내부 통신망을 구성하는것이 아닌 가상 사설망 [VPN]을 이용 안전하게 통신가능합니다


이들이 하나의 네트워크 구축을 위해 기존 전용선을 사용하는 방법에는 비용을 포함한 여러가지 한계를 가지며, 전용선을 이용해서 네트워크가 구성되었다고 하더라도 네트워크 운영을 자체적으로 하는 것과 새로운 기술들을 도입하는 것 역시 기업의 입장에서는 상당한 부담이 될 수 있다. 또한 기존의 공중 네트워크는 보안과 관련해서는 서비스를 제공하지 않기 때문에 중요한 문서나 데이터를 전달하기에는 부족한 점이 있었다. 이러한 복합적인 이유가 가상 사설망이 등장한 계기가 되었습니다


==================================================================


가상사설망 만들기


VPN을 만들어 주는방법중 하나를 소개해 드리면

GRE Tunneling을 이용한 VPN을 만들수있습니다


==================================================================


GRE over IPsec VPN

=가상 사설망을 만드는 방법중 하나입니다

→ GRE Tunneling 구간을 IPsec 암호화하여 안전하게 다른 네트워크 끼리 통신할때

안전하게 통신이 가능하다


※GRE Tunneling 만사용하여 통신할시 중간에서 패킷을 확인하면 모든패킷이 나오기 때문에

위험하다 그렇기 때문에 IPSec로 암호화하여 통신하는것이다


==================================================================





GRE over IPSec VPN



실습 토폴로지





==================================================================

※기본적인 통신은 구성되어 있어야 합니다

  1. 전구간 라우터 통신상태 확인

  2. Vmware 연동하여 통신상태 확인


==================================================================


우선 GRE 터널을 이용해서 외부망과 내부망을 서로 연결해준다음

연결해준 터널을 IPSec로 암호화 하는 방식이다



VPN을 위한 GRE 터널 생성 방법


R1 config


conf t

int tun 0

tun sour se2/0

tunnel dest 192.168.200.2

ip add 192.168.250.1 255.255.255.0

exit


access 101 per ip any 192.168.3.0

route-map pbr1 permit

match ip add 101

set ip next-hop 192.168.250.2

int f0/0

ip poli route-ma pbr1



==================================================================


R3


conf t

int tun 0

tun sour se2/1

tunnel dest 192.168.100.1

ip add 192.168.250.2 255.255.255.0

exit


access 101 per ip any 192.168.1.0

route-map pbr1 permit

match ip add 101

set ip next-hop 192.168.250.1

int f0/0

ip poli route-ma pbr1


==================================================================


config 해설



터널 인터페이스를 생성하고

터널의 시작 인터페이스를 지정하고

터널의 목적지 IP를 설정한다

그후 터널 인터페이스의 IP를 지정


터널을 통과할 ACL 리스트를 생성한 다음

(출발지는 any 목적지는 외부네트워크로 나가는 패킷으로 설정했다)

라우트 맵을 생성한후 ACL을 적용시킨다

라우트 맵을 통과하는 다음 지점을 터널의 반대쪽 인터페이스의 IP를 설정

라우트 맵을 설정할 내부 인터페이스를 설정한다



==================================================================


IPSec 설정 방법

→ IPsec 설정은 1페이즈와 2페이즈로 구성되어 있다




R1config


1페이즈 [Configure ISAKMP 설정]


 crypto isakmp policy 1

 encryption 3des

 hash sha

 authentication pre-share

 group 2

 lifetime 86400

 exit

 crypto isakmp key firewallcx address 192.168.200.2



2페이즈 [IPSec 설정]


 crypto ipsec transform-set TS esp-3des  esp-sha-hmac

 mode transport

 crypto ipsec profile protect-gre

 set security-association lifetime seconds 86400

 set transform-set TS

 interface tunnel 0

 tunnel protection ipsec profile protect-gre



R3config


1페이즈 [Configure ISAKMP 설정]


 crypto isakmp policy 1

 encryption 3des

 hash sha

 authentication pre-share

 group 2

 lifetime 86400

 exit

 crypto isakmp key firewallcx address 192.168.100.1



2페이즈 [IPSec 설정]


 crypto ipsec transform-set TS esp-3des  esp-sha-hmac

 mode transport

 crypto ipsec profile protect-gre

 set security-association lifetime seconds 86400

 set transform-set TS

 interface tunnel 0

 tunnel protection ipsec profile protect-gre


==================================================================

config 해설


1페이즈 [Configure ISAKMP 설정]


ISAKMP 생성

des라는 알고리즘을 3번 이용 해서

해시 함수로 생성

psk 방식으로 인증

디피헬만으로 생성 [숫자가 높으면 복잡해진다]

ISAKMP의 키값을 firewallcx로 생성 다음 주소를 반대쪽 터널 인터페이스 주소 설정


2페이즈 [IPSec 설정]


트랜스폼 생성 [TS] 암호화 방법 해시으로 하는것

1대1 암호화 통신설정

ipsec 하나더 생성 [protect-gre]

시간 제한 [86400]

트랜스폼 [TS] 적용

터널인터페이스 0번에

만든 [protect-gre] 넣기



==================================================================

IKE 동작 과정

페이즈 1 ,2으로 구성

1은 메인 2는 퀵


페이즈 1에서는

IKE 협약과정 , 키생성을 진행하며

우선 암호 무결성 알고리즘 협상한뒤

키생성한뒤 디피 헬만방식으로 키를 교환한다

상호 인증방법을 진행한다



페이즈 2에서는

IPsec 통신을 위한 협약 과정을 진행한다

페이즈 1에서 만든것을 한번더 암호화 한다고 생각하면된다


암호, 무결성 알고리즘 협상을 진행한뒤

Session Key 생성

상호 인증을 진행한다




==================================================================

※ 상호인증방법은 PSK 이다

※ 1번째 설정 IKE SA 암호화 방법 설정 (양쪽장비에 같게 설정)

※ 2번째 설정 IPSec SA 설정 (양쪽장비에 같게 설정)


==================================================================




모든 설정을 마친후 외부 네트워크와 통신을 시도시






통신도 잘되는것을 확인할수있으며 또한 ESP로 암호화가 되어있어서

중간에 패킷분석이 불가능하다




이렇게 VPN 생성 및 통신상태를 확인해 보았습니다


=================================================================

이곳에서 작성되는 Network Hacking 기법들은 다른곳에서 악의적으로 사용할시에는 처벌을 받으실수도 있습니다 부디 악의적인마음으로 사용하지 마시고 이곳이 지식을 쌓는 장소가 되었으면 좋겠습니다 조심해서 사용해 주시길 바랍니다

SSL Strip Attack

공격자가 중간에서 SSL로 보호되는 세션을 벗겨내는것입니다


즉 공격자는 MiTM 상태를 클라이언트 -- 공격자 -- Web 서버 로 만들어서

클라이언트와 공격자 사이에서는 HTTP로 통신되게끔 유도하고

공격자와 Web서버에서는 HTTPS(SSL)로 통신한다


클라이언트 입장에서는 인증서를 조작하는것이 아니기 때문에

인증서 에러메시지도 출력되지않고 url창에 HTTPS로 접속되어야 하는부분이

HTTP로 변한것 뿐이어서 공격당하고 있는지 확인도 어렵습니다


또한 SSL MiTM 공격은 현재 안되는곳이 대부분이지만

SSL Strip Attack은 아직까지도 가능합니다


공격순서







실제 공격

1.sslstrip tool을 받기 위해 해당 사이트로 접속한다


다운로드를 받은뒤에 파일을 확인한다


2.파일압축을 해제하여 sslstrip을 설치한다


→ SSL strip을 설치한다


3. ARP Spoofing , 리눅스 방화벽을 이용한 포트 변환 , SSLstrip을 실행한다

※ iptables = 리눅스 방화벽

→ 방화벽을 이용한 포트변환을 실시하여 클라이언트가 보내는 80번 포트를 10000번 포트 (SSLstrip이 이용하는 포트)로 전달하게끔 실시한다


SSLstrip을 이용하여

10000번 포트로 전달받은 패킷을 test.log에 저장하는 방법이다


★port 번호는 지정된것이 아닌 마음대로 변경이 가능하다 (지금은 10000으로 설정)


==================================================================


즉 포트 X를 지정하여 80번 포트로 들어오는정보를 전달시켜

공격자는 X 포트를 이용하여 외부망과 https 통신을 시도하고

클라이언트와는 80번으로통신 (http)로 통신하는 방법이다


==================================================================


4. 클라이언트가 다른 사이트 접속시 https로 통신되어야 하는부분이 http로 통신되고있다


또한 공격자는 클라이언트가 통신한부분을


로그 파일을 통해 확인할수도 있다



SSL Strip Attack 방어방법

1.MiTM 상태가 되지않는 환경을 구성한다

2.사용자가 HTTPS로 접속되는곳을 파악하여 HTTP로 접속되는곳은 이용하지않는다

















이곳에서 작성되는 Network Hacking 기법들은 다른곳에서 악의적으로 사용할시에는 처벌을 받으실수도 있습니다 부디 악의적인마음으로 사용하지 마시고 이곳이 지식을 쌓는 장소가 되었으면 좋겠습니다 조심해서 사용해 주시길 바랍니다

SSL MITM Attack

→ 웹 서버와 브라우저간의 보안통신을 위해 사용되는 프로토콜

SSL 사용시 https를 사용합니다

인증서를 받고 확인하는 작업을 먼저하는데 만약 인증서에 문제가 있을시 미리 경고를 하게됩니다


  1. http로 보안페이지 접속시 잘못접속시 서버에서 https주소를 알려주고 https로 재접속한다

  2. 자신의 인증서와 공개키를 브라우저에게 보냄 , 서버가 진짜인지 가짜인지 확인할수있게한다

  3. 인증서를 확인한다

  4. 세션키를 만들어서 웹서버의 공개키로 암호화 해서 전달한다

→ 가짜 서버라면 웹서버의 개인키가 없기 때문에 복호화가 불가능하다

웹브라우저가 요청하는 정보를 암호화해서 보낸다

  1. 웹서버가 진짜라면 개인키로 복호화해서 전송한다


==================================================================


SSL MITM Attack

공격자가 인증서를 가로채고 공격자가 만든 인증서를 주는방법

→ 인증서 위조 , 인증서에 문제가 있는 상태로 웹브라우저에 전송

= 경고창이 계속 팝업 창이 떠서 , 클라이언트가 알수있게 된다


SSL Strip Attack

공격자가 SSL 로접속하게 하는것이 아닌 HTTP 메시지로 보내게 하는것이다

공격자가 클라이언트 대신 SSL 로접속하는것이다


→ 서버가 주는 인증서를 조작하는 공격

클라이언트에게는 인증서 오류 메시지가 출력되어 공격이 발각될 가능성이 높다

최신의 업데이트된 웹 브라우저 같은 경우에는 공격이 잘되지 않는다


공격자가 중간에 MITM 상태를 만들어서 (DNS Spoofing으로)

웹 요청을 직접 받아 포워딩하면서 정보를 탈취한다


==================================================================


Webmitm 과 DNS spoofing , ARP Spoofing 공격은 중간에 중단 X

tcpdump로 공격대상이 입력한 메시지를 생성하고 web…..c..로 복호화 한다


※중간중간에 모든 공격이 잘되고 있는지 확인이 필요하다

특히 DNS Spoofing 공격 같은 경우에는 상대방이 내부에 있는 DNS 서버를 이용할 경우

공격이 잘 안될 가능성이 있다


==================================================================





SSL MITM Attack


→ webmitm tool은 해당 상태까지만 진행한다

또한 재시작시 해당 메시지는 보이지않는다



→ DNS Spoofing으로 유도할 사이트들

※모든공격이 원활히 성사되야지 재대로된 SSL MITM 공격이 가능하다

모든공격이 되었을때 클라이언트에서 DNS 해당 사이트로 접속시도시

보안경고 인증서 오류가 뜨게 되지만 만약 클라이언트가 그냥 이용하게될시


공격자는 만들어둔 attack.txt파일을 확인하여 클라이언트가 입력한

정보를 그대로 확인할수있다


=================================================================

SSL MITM Attack 결론


클라이언트에게 Web요청을 받아 웹서버 쪽으로 포워딩하고

인증서를 조작해서 클라이언트에게 포워딩 하는방법이다


단점으로는 트래픽이 우회가 불가능하고

자기자신에게 Web요청이 와야함

(MITM 상태로 만들어야한다 또한 DNS Spoofing을 통해 특정 사이트 접속시 자기 자신에게 요청이 와야한다)

인증서 자체에 문제가 있어서 계속 클라이언트에게 인증서 에러 메시지가 출력 된다


웹브라우저 에서 조치를 해두면 실패할 가능성이 높다

최근에는 거의 모든곳에서 불가능합니다


=================================================================


SSL MiTM Attack 방어방법

1.MiTM 상태가 되지않는 환경을 구성한다

2.사용자가 HTTPS로 접속되는곳을 파악하여 HTTP로 접속되는곳은 이용하지않는다




이곳에서 작성되는 Network Hacking 기법들은 다른곳에서 악의적으로 사용할시에는 처벌을 받으실수도 있습니다 부디 악의적인마음으로 사용하지 마시고 이곳이 지식을 쌓는 장소가 되었으면 좋겠습니다 조심해서 사용해 주시길 바랍니다


SNMP Vulnerability

SNMP


→ 단순한형태를 가진 네트워크관리용 프로토콜

NMS = 네트워크 장비들을 관리하기위해 만들어진것


Manager = 관리자

Agent = 관리자에게 수집한 정보를 보고 관리자에게 명령받은것을 수행하는 대리인

MIB 형태로 저장 []

라우터에 SNMP 서버를 설치하여 사용할것이다


Polling 방식

Manager가 Agent에게 명령하고 Agent가 수행하고 보고하는 형식

UDP 161번


Event Reporting

Agent가 특정상황 발생시 Manager에게 보고하는 형식

UDP 162번






→SNMP는 그래픽 환경으로 네트워크의 정보를 손쉽게 실시간으로 얻을수있다


★Community String = 관리자가 Agent에게 명령시 특정 명령어를 입력해야지 Agent가 명령을 수행한다 ( Agent가 관리자인지 확인하는 유일한 수단 )


→ Sniffing을 시도하면 Community String을 바로 얻어낼수있음 , 보안성 취약


SNMP는 암호화 통신이 되지않아 Community String에 의존하는 경향이 있다

공격자가 SNMP 공격에 성공하게 되면 모든 설정을 한눈에 파악할수있다


SNMP에서 사용되는 메시지


==================================================================

→ CMIP는 리소스를 많이 소모하고 구조가 복잡하여 사용하지않고 SNMP를 더많이 사용함


==================================================================



Cisco OID 확인 방법


site 주소 = tools.cisco.com/Support/SNMP/do/BrowseOID.do

ID = wingofbluesky27

PW = P@ssw0rd



N은 OID 명령어의 끝을 의미한다

→ (x)의 경우에는 OID 명령어후 세부 설정을 의미한다

즉 1.3.6.1.4.1.9.9.96.1.1.1.1.3.(3) = 복사할 환경설정 파일을 Startup config로 지정


TFTP로 업로드를 하게되면

병합이 된다 즉 명령어를 수정할때 명령어를 입력하는것처럼 해야한다


XP가 Manager

Router가 Agent 이다


XP에서 실행한 명령어 기준으로 라우터의 정보를 받게 되면

라우터 입장에서는 업로드 XP 입장에서는 다운로드

즉 입장이 반대로 되어있다








SNMP Manager 설정 방법


Manager은 여러가지 방법이 있지만 이번에는 Solarwind 를 사용해 보겠다


Setup파일을 keygen을 이용 크랙하여 설치한다


==================================================================

SNMP Agent 설정 방법


라우터를 Agent로 설정시


Snmp-server community [community string] [권한] 순으로 입력하면된다

즉 snmp를 동작시키는데 private는 읽기 쓰기 권한주는것

public 은 읽기 권한만 주는것 으로 설정 할수있다


==================================================================


Solarwind 프로그램을 이용하면 GUI 환경으로 SNMP를 사용할수있다

TFTP 의 기능을 사용할시


TFTP의 간단한 설정을 한후

Agent에서 Config정보도 다운로드 받을수 있다

Agent IP와 Community String을 입력후

Config정보를 다운받게 되면 설정 TFTP 기본경로에 Config 파일이 들어오게된다


패킷을 분석하게되면 UID 정보가 사용된것을 확인할수있다

업로드 시에는 병합과 덮어쓰기중 잘 선택하여 사용해야한다



















SNMP Vulnerability

공격방법


1.공격 시작전 라우터에 SNMP 설정이 되어있는지 확인

포트스캐닝을 이용하면된다 [udp]


SNMP를 이용하기 위해 Community String을 얻어내야 한다



==================================================================


만약 스니핑이 불가능한 상황에서 SNMP를 공격하는 방법

onesixtyone = Brute Forcing을 이용한 Community String을 얻어내는 방법

사전공격을 통하여 Community String을 알아낼수도 있고 만약 불가능하다면

무차별 대입기법을 통하여 기다려보는 방법도 있다


※스니핑이 가능하다면 그냥 스니핑 하면  Community String은 암호화가 되어있지 않기 때문에 그냥 공격할수있다


==================================================================














2.무차별 대입기법을 통한 Community String 알아내는 방법


→ 해당 위치로 들어간다음

→ 무차별 대입기법을 통한 Community String 알아내는 방법

= Community String은 private와 public 이였다


























3.공격할 방향에 따라서 Community String을 이용하여 공격

→ 예를들어 TFTP를 이용해서 라우터의 정보를 얻어내고 싶다면



snmpset -v 2c -c private 10.10.10.100 1.3.6.1.4.1.9.9.9.96.1.1.1.1.2.200 i 1

→  snmpset -v [버전] -c [Community String] [SNMP Agent 주소] [OID] [입력할내용]


※입력할 내용에 따라서 숫자는 = i , 문자는 = s , 주소는 = a로 입력한다

★만약 재공격시 OID의 맨 마지막 숫자 N 을 변경해서 공격해야 한다


TFTP를 통해서 공격자에게 running config의 정보를 다운받아

running-config라는 이름으로 저장하는 방법

확인해보면 정상적으로 전송되어 있다


※반대로 업로드를 해서 공격을 하고싶으면  OID의 마지막 옵션들을 수정해서 공격하면 된다

방어방법

  1. 스니핑 방지하는 방법

  2. Community String을 알아내기 힘들게 복잡하게 사용하는 방법



==================================================================


BT에서 TFTP 설정 하는 방법


1.BT에서 window의 유틸을 사용할수 있는 Wine을 설정해야 한다




→ Autodetect로 드라이브들을 자동으로 찾아서 잡아준다




2.사용할 tool에 권한을 올려 사용할수 있게 해야한다

→ TFTP를 사용해야 하기 때문에 TFTP의 권한을 높여 줘야 한다



→ TFTP를 사용하게되면 이런식으로 로그가 남는다



=======================================================
=======================================================




격방법 2


BT에서 snmpset을 자동으로 입력해주는 파일을 만들어서 좀더 편한 방식으로

SNMP Vulnerability 공격을 할수있다 한줄씩 입력해야하는것에 비해서 편하게 공격할수있는방법이다  


=================================================================

※ echo = printf 와 비슷하게 동작한다

→  “”에 묶여 있는 문자열을 출력해준다 또한 -n 옵션을 같이사용하면

다음입력을 받기전까지 대기상태로 남아 있는다


※ read = 변수처럼 사용하며 해당 문자열을 입력 받아 넘겨주는 역할을 한다


즉 Enter a Number을 출력하고 대기하고 있다가 숫자를 입력해주면 NO에

들어가서는 방식이다

==================================================================


해당 파일을 생성후 실행 하게되면 몇가지 필요한 정보를 입력하게 된다

→ 해당 명령어들은 SNMP 서버에서 running-config를 받아오는 방법으로

SNMP 서버 주소 , Community String , TFTP의 주소 , 저장할 파일 이름을 입력하게 되면


running config를 다운받을수 있다

==================================================================




해당 파일이 생성되는것을 확인할수있다 하지만 SNMP 서버가 TFTP의 기능을 관리자에게만

설정을 했다면


파일이 생성되지않는다






+ Recent posts