문제점

소스트리에서 파이썬 및 자바 등 일반적인 소스코드는 바로 비교되어 어느 부분이 수정됬는지 확인이 가능하지만,

MQL5, 구조가 다른 CPP 등 특수한 경우 아래와 같이 확인이 바로 안되는 경우 발생

 


해결책

인터넷에 검색하면 다양한 해결책이 나왔지만 해보니 잘 되지 않았다.

그래서 찾은 방법은 외부 비교 툴을 연동하는 방법이다.

 

 

1. 외부 도구 중 WinMerge 프로그램 설치

 

https://winmerge.org/downloads/?lang=ko 

 

WinMerge 다운로드 - WinMerge

WinMerge 다운로드 WinMerge를 설치하는 가장 쉬운 방법은 설치 프로그램을 다운로드하여 실행하는 것입니다. 온라인 설명서 사용에 대한 도움말을 참조하십시오. WinMerge 2.16.28 현재 WinMerge 버전은 2.1

winmerge.org

위의 사이트로 들어가 Win Merge를 다운로드하여 기본 세팅되어 있는 옵션으로 설치한다.

 


2. 소스트리 옵션 세팅

소스트리의 도구 - 옵션으로 들어간다.

 

하단 '외부 비교 도구' 옵션을 WinMerge로 선택하고, Diff 명령어는 다음과 같이 세팅한다.

(자동으로 세팅되는 경우도 있다.)

C:\Program Files\WinMerge\WinMergeU.exe

모든 세팅은 끝났다.


3. 수정 사항 보기

파일 비교 창 상단을 보면 설정 버튼이 있다.

'외부 비교 도구' 메뉴를 클릭한다.

 

이렇게 파일 비교를 할 수 있다.

사실 소스트리에서 바로 비교하는 것이 가장 편한 방법이지만 소스트리에는 코드뭉치 개념이 있어서 코드 구조가 깨져있으면 비교가 불가능 하기 때문에 외부 툴을 활용하는 수밖에 없다.

 

비교하고자 하는 파일을 우클릭하여 '외부 비교도구' 메뉴로도 동일하게 확인 가능하다.

 

  • Broadcom
    • 802.11g 지원
    • 많은 laptop에서 활용
    • PCMCIA장치 사용
    • Broadcom의 "Standard-plus 기술 사용

  • Atheros
    • 가장 유명한 802.11 chipset
    • 모니터 모드와 packet injection 활용가능
    • MadWifi 를 통해서 이용이 가능
    • 현재 PCMCIA는 지원하지 않음

  • Palink
    • Open-source를 지원하고, 안정적임
    • Rt2500계열은 리눅스에서 활용가능
    • Rt2750은 리눅스에서 injection interface 제공

  • Centrino(Intel pro Wireless 2100/2200/2915/3945)
    • Mini-pci카드들에서만 이용가능
    • 2200은 b/g를 지원, 2915와 3945는 a/b/g를 지원
    • 모니터 모드 지원, packet injection은 지원하지 않음

 

IAS (Internet Authentication Server)는 window 2000 server 와 2003 server에서 기본적으로 구동할 수 있는 인증서버이다. EAP 를 기반으로 PAP, SPAP, CHAP, MS-CHAP-V2, EAP-TLS, PEAP등의 인증 프로토콜을 지원한다.

 

 

 

IAS 구축하기

우선 RADIUS server에서 사용할 Active Directory를 서버 구성 마법사를 이용하여 설치한다.

 

서버 구성 마법사 시작화면

 

네트워크 설정부분

 

구성옵션 화면. 첫 번째 서버의 일반 구성을 선택한다.

 

Active Directory 도메인이름. AD에서 사용할 도메인 이름을 지정한다.

 

NetBIOS 이름 선택부분. 기본설정으로 다음을 누른다.

 

DNS 쿼리 전달. Window2003에서 구성한 DNS server가 처리하지 못

하는 쿼리를 전달할 server를 지정하는 부분이다.

 

DNS Query 전달 설정이 끝난 뒤에 다음 버튼을 누르면 다음과 같은

화면이 나온다. 확인을 눌러 진행하도록 한다.

 

다음화면은 설치를 위한 CD를 삽입하고 확인버튼을 누르면 된다.

확인을 누르면 설치가 진행되고 구성이 완료되면 시스템이 재 시작된다.

 

재부팅을 완료한 뒤에 활성화 되는 창이다.

 

서버의 구성이 완료된 화면이다. 확인해 보면 DNS 와 DHCP server가

설정된 걸 확인할 수 있다.


 

AD 설치가 완료 되었다면 인증서 다운로드를 위한 IIS server 를 구동 시킨다.

서버 구성 마법사를 이용하여 설치하도록 한다.

 

서버 구성 마법사. IIS 설치화면

 

프레임워크를 설정하는 화면이다. ASP.NET을 설정한 뒤에 다음을 눌러

진행한다.

 

IIS 설치 완료 화면이다.

 

다음은 인터넷 인증서비스를 구동 시켜준다.

 

프로그램 추가/제거 -> window 구성요소 추가/제거 -> 네트워킹 서비스 -> 인터넷인증서비스

 


 

다음은 Window 구성요소 추가/제거 창에서 인증서 서비스를 선택하여 설정해 준다.

 

인증서 서비스를 선택하면 위와 같은 메시지가 보이는데 예를 눌러 계속

진행하도록 한다.

 

CA의 공통 이름부분에 원하는 이름을 적고 다음을 눌러 진행한다.

 

구성 요소 설정 중 IIS 가 설정되어 있지 않다면 다음과 같은 메시지가 출력된다.

확인을 누른 뒤 설치를 진행한다.

 


 

다음으로 Active Directory 사용자와 그룹을 구성해 준다.

 

사용자와 그룹 메뉴를 선택하여 사용자와 그룹을 추가해 준다.

 

Client1이라는 사용자와 wireless라고 하는 그룹을 추가하였다.

 

생성한 그룹에 사용자를 추가해준다.

위와 같은 방법으로 Domain user, account operators 라고 하는 그룹에도

추가해준다.

 


 

다음은 인터넷 정보 서비스 (IIS) 관리 창을 확인한다.

 

위의 순서대로 설치를 했다면 Active Server Pages가 허용됨으로 설정 되어

있겠지만 그렇지 않은 경우에는 금지됨으로 되어 있다.

 

금지됨으로 설정되어 있는 부분을 허용됨으로 변경 시켜준다.

 


 

인터넷 인증 서비스 RADIUS Client를 설정하고 새로운 정책을 설정한다.

 

새 RADIUS 클라이언트를 선택하여 클라이언트를 등록한다.

여기서 말하는 클라이언트는 Access Point를 의미한다.

 

이름과 IP를 지정하는 부분이다. 이름은 상관없지만 IP는 AP의 IP를 적어준다.

 

공급업체와 공유암호를 지정한다.

 

IP와 공유암호는 AP와 RADIUS가 일치해야 한다.

 

Linksys라고 하는 사용자가 추가된 것을 확인할 수 있다.

 

새 원격 엑세스 정책 메뉴를 선택하여 정책을 만들도록 한다.

 

정책 이름을 만들고 다음을 눌러 진행한다.

 

무선 정책으로 설정한다.

 

추가했던 wireless 그룹을 추가해 준다.

 

인증서를 사용하는 인증방식 (TLS)를 선택해 준다.

 

설정을 마치면 추가한 정책이 보인다. 추가한 정책에 속성 창에 있는 정책을

확인하고 PEAP로 설정되어 있다면 변경해 주도록 한다.

 

속성 -> 프로필 편집 -> 인증 -> EAP 방법

 


 

MMC를 이용하여 인증서를 추가하고 로컬컴퓨터에 사용자 인증서를 확인한다.

 

로컬컴퓨터에 인증서와 루트인증서가 있는지 확인한다.

 


 

Window 2003 Server에 설정이 끝났다면 클라이언트(window XP)에 설정을 하도록 한다.

 

우선 컴퓨터 이름과 소속그룹 도메인을 지정하도록 한다.

 

도메인 명은 RADIUS Server에서 지정한 이름과 동일하게 설정한다.

설정이 끝나면 시스템 재 시작 후에 설정 정보가 적용된다.

도메인 설정이 완료되면 로그오프 후 해당 도메인 user 계정으로 로그온 한다.

 

RADIUS Server 에 AD user 계정인 client1로 접속한다.

 

로그온이 끝나면 ping 을 보내어 응답을 확인한다.

 

192.168.1.254/certsrv 라는 주소로 접속하여 인증서를 설치한다.

 

가장 상위 항목인 인증서와 CA인증서를 설치한다.

 

위와 같이 웹 페이지에 접속할 수 없는 경우에는 certsrv에 접근할 수 있도록

웹 공유 설정을 해줘야 한다.

 

설정이 완료하면 접속을 시도한다.

 

 

실습을 진행하는 동안 네트워크 상태는 NAT 로 설정하고, 접속시도 시에는 window 2003은 Bridged, window XP는 무선 랜 카드를 이용하여 접속을 시도한다. (XP의 유선 네트워크 인터페이스는 비활성화 시킨다.)

 

802.1x

  • 유선랜 보안 인증 방식인 802.1x를 WEB과 mac filter 방식의 802.11i 무선랜 인증 방식의 한계를 보완하기 위해서 사용
  • PAP (Password Authentication Protocol)
  • User_ID(Peer_ID)와 Password를 기반으로 한 인증방식
  • CHAP (Challenge Hand Authentication Protocol)
  • Password의 노출이 있는 PAP의 단점을 보완한 인증방식
  • EAP (Extensible Authentication Protocol)
  • LEAP, EAP-TLS, EAP-TTLS, EAP-MS-CHAP-v2등의 확장형 인증 프로토콜
  • 유선상에서 사용하던 인증 방식을 무선에 접목 시킨 방식이다.
  • AP를 서버개념으로 두고 인증 서버를 따로 두는 개념.

802.1x Authentication Protocol

  • PAP (Password Authentication Protocol)
    • Point -to-Point Protocol(PPP)에서 사용하는 인증 프로토콜
    • 가장 일반적인 인증 방식으로 사용자의 ID(peer_ID)와 Password를 이용하여 사용자를 인증하는 방식
    • 대표적인 서비스는 Telnet 이다

  • CHAP (Challenge Handshake Authentication Protocol)
    • PAP의 단점 (ID, Password 노출)을 보안한 인증 프로토콜
    • Password 정보를 평문으로 보내지 않고, server에서 전송한 Challenge Value (CV)를 이용한 ID값과 MD5 Hash value를 이용한 Password를 생성하여 전송함
    • 만약 사용자가 늘어나면 AP의 관리가 힘들고 과부하와 용량의 한계가 생긴다.
    • 그래서 생긴 개념이 RADIUS (Remote Authentication Dial-In User Service) 이다.

    • 참고 : RADIUS (Remote Authentication Dial-In User Service) -인증만 하는 인증 서버
      • NAS(Network Access Server)에 사용자가 접속 요청을 하는 경우 요청된 시스템이나 사용자 를 인증하고 접근 권한을 부여하는 클라이언터/서버 프로토콜
      • 무선랜에서는 NAS 역할을 하는 AP와 인증서버간에 수행됨

  • EAP
    • 다양한 인증 방식 (MD5-challenge, One-Time password, token card등)을 지원 할 수 있는 확 장형 인증 프로토콜
    • Port access Protocol의 약자.
    • EAP는 AP가 Client에게 받은 인증 프로토콜을 RADIUS에게 전달해 주는 역할을 한다.
    • 유선 망에서 사용하는 사용자 인증 프로토콜이지만 무선 망에서 사용자 인증 시에도 사용됨
    • 사용자와 인증서버간 상호인증 기능이 없다는 단점이 있다.
    • EAP-TLS, EAP-TTLS, PEAP, EAP-FAST(PSK를 사용)등으로 보완

  • EAP-TLS(Transport Layer Security)
    • 인증서를 기반으로 하는 클라이언트와 서버의 상호 인증방식
    • 클라이언트가 RADIUS를 못믿기 때문에(Log EAP Attack 등) RADIUS를 인증하는 인증서 기반의 SSL과 동일한 방식의 TLS를 만들게 되있다.
    • TLS는 SSL 3.0 부터 파생된 것으로 기술적으로는 SSL과 같다. 차이점은 SSL은 서버를 인증하고 TLS는 서버와 클라이언트 상호간 인증서를 가지고 인증을 한다.
    • 서버측에서 클라이언트를 인증 할 수 있음
    • 클라이언트는 유효한 서버인지 인증할 수 있음
    • 데이터를 암호화하는 session key를 생성할 수 있음
    • 서버와 클라이언트 모두 인증서 필요
    • 이 방식은 보안상 취약하지 않다 (무결성하다). 하지만 관리상 불편하다.

    • 동작방식

*참고..

TMS : station - AP구간에서 PTK를 만들기 위한 암호화 키

TEK : AP - RADIUS 구간에서 PTK를 만들기 위한 암호화 키

    • 자세한 동작 방식
      • <------인증서, TLS레코드------
        • 이때 station에서는 PSK가 생긴다.
        • 이 PSK를 PRF함수로 돌리면 TMS와 TEK가 만들어진다.
        • TMS를 이용해서 MSK를 만든다.
        • MSK는 64byte로써 앞의 32byte는 PMK가 된다.
      • -------인증서,PSK(Premaster Secret Key), TLS레코드 ----->
        • 이때 RADIUS에서도 PSK가 생긴다.
        • 이 PSK를 PRF함수로 돌려 TMS와 TEK를 만든다.
        • TMS를 이용해서 MSK를 만든다.
      • AP<-----EAP Success-----RADIUS
        • RADIUS에서 AAA-Key(64byte)를 AP에 전달한다.
      • Station<------EAP Success ----AP
        • MSK의 64byte중 앞의 32byte인 PMK를 Station에게 준다.
      • 이작업이 끝나면 PMK 값이 공유가 된다.

*참고

TK : 무선 암호화 TEMP KEY (unicast용)

KEK : 무선 암호화 TEMP KEY (broadcast용)

KCK : 키를 재생산함 (MIC KEY가 된다.)

    • 이후 4Way Hand Shaking
      • Station <-----Anonce----- AP
        • Station은 PMK + Anonce + Snonce + Station`s MAC + AP`s MAC 이 값을 PRF함수로 돌린다.
        • 이 결과값이 PTK이다.
        • 이 PTK를 가지고 TK, KEK, KCK 를 만든다.
      • Station -----Snonce------> AP
        • AP 역시 위와 같은 작업을 수행한다.
      • Station <-------MIC------- AP
      • Station -------MIC-------> AP
        • MSK와 PMK가 같은지 확인하고 세션이 맺어진다.

  • EAP-TTLS
    • EAP-TLS와 비슷한 방식이지만 터널을 뚫고 그 안에서 인증 관련 패킷을 주고받는다.
 
WPA2-PSK Crack은 아쉽게 캡쳐 사진들을 찍지 않아서 명령어만 올려드립니다.

다른 무선 해킹 기법을 해보신 분들은 어떤 내용인지 이해되실거라 생각됩니다.

아쉽지만 명령어만 올려드리는 점 양해 부탁드립니다.

1. airmon-ng start wlan0

모니터링 모드 시작

 

2. airodump-ng mon0

덤프 시작

여기에서 AP와 Station의 상태를 확인할 수 있다.

 

3. airodump-ng -w name --bssid APMAC -c channelNUM mon0

덤프와 함께 해당 AP 트래픽 저장

 

4. aireplay-ng --deauth 1 -a APMAC -c ClientMAC mon0

타겟 AP에 붙은 하나의 스테이션 접속 해제

 

5. 그럼 재접속과 동시에 3번 창에서 WPA handshake가 뜬다.

그리고 dump종료

 

6. aircrack-ng 파일이름.cap -w ./사전파일

크랙 시작

 

7. 크랙되면 화면에 뜸

 

WPA2의 암호화 알고리즘은
CCMP(Counter Mode with Cipher Block Chaining Message Authentication Code Protocol) 이다.

Encryption Algoritm

 

  • 목표 : AP (공유기)가 WPA1 로 암호화되어 있다면 WPA1 Crack 기법으로 암호 알아내기.
  • 방법 : AP와 통신하는 컴퓨터 중 하나를 Deauthentication Attack으로 연결을 끊은 후 해당 컴퓨터가 다시 연결을 시도하는 과정(Handshake)의 트래픽을 스니핑하여 딕셔너리 기법으로 암호를 알아냄.

 

WPA1 Crack 시작!!

유선 인터페이스 카드가 있다면 셧다운 시킨다.

무선 인터페이스 카드는 활성화 시킨다.

 

무선 인터페이스 카드를 모니터링 모드로 변경한다

 

WPA 크랙을 하기 위해 정보수집을 해야 한다.

 

 

정보수집에 필요한 항목은 SSID와 BSSID, 채널, Encrypt 타입이다.

kismet 유틸리티로 확인하면 된다.

 

 

채널을 kismet에서 확인한 채널로 변경한다.

 

 

iwconfig 명령으로 모니터링 모드인지 확인하자

 

 

Backtrack 시스템에서 export 명령으로 BSSID, USB 무선 인터페이스의

MAC 주소 값을 변수화 하여 저장하자!

 

 

Wireshark를 실행하여 희생자를 물색하자!

 

 

Wireshark 상에서 BSSID를 필터링 하여 패킷을 잡은 후 AP와 통신중인 희생자의

MAC 주소를 확인한다.

 

 

확인된 희생자의 MAC 주소를 export명령을 이용하여 시스템에 변수화 하여 저장한다.

 

 

 

airodump-ng의 help 화면이다. 참고!

 

 

airodump-ng 유틸리티를 사용하여 TKIP로 된 BSSID의 패킷을 모니터링 한다.

 

 

패킷을 수집하는 화면이다.

 

 

airodump-ng를 사용하여 패킷을 수집하는 동안 aireplay-ng를 이용하여 희생자 시스템으로 Deauthentication Attack을 진행한다.

 

 

Deauthentication Attack을 하고 나면 희생자의 무선 인터페이스가

AP와 연결이 종료 되었을 것이다.

이 때 airodump-ng 상에서는 WPA handshake 과정이 일어난 것을 확인 할 수 있다.

 

 

airodump-ng 를 통해 WPA.pcap-02.cap 파일이 생성 되었다.

ls 명령으로 확인하자!!!

 

 

이제 사전파일을 구해야 한다.

Bruteforcing Attack을 하기 위해서는 훌륭한 사전파일이 필요하다.

사전파일이 없다면 위처럼 cat 명령을 사용하여 사전파일을 만들자!

 

 

cowpatty 유틸리티의 help 화면이다.

 

 

cowpatty 툴을 사용하여 Brute force Attack을 진행하면 사전파일에 WPA 암호와 같은 단어가 있다면 WPA 크랙이 성공할 것이다.

 

url은 https://www.google.com 과 같은 형식의 문자열이다.

사실 우리는 https와 www를 생략하고 브라우저에 입력해도

알아서 찾아가주지만

프로그램에서는 전체를 입력받는 것이 좋다.

 

http와 www를 생략해도 처리되게 하려면

정규표현식을 사용해야 한다.

 

하지만 전체 url 문자열의 유효성을 검사하려면 모듈을 사용하면 된다.

 

validators 문자열은 url 뿐만 아니라 email주소, ip 주소 등 다양한 문자열의

유효성을 검사해준다.

 

참고 : https://pypi.org/project/validators/

 

validators

Python Data Validation for Humans™.

pypi.org

 

pip install validators
import validators

if validators.url('http://google.com'):
    print('참')
else:
    print('거짓')

 

맞으면 True

아니면 ValidationFailure를 반환하기 때문에 if를 활용한다.

+ Recent posts