Thursday, January 24, 2019

윈도우 DLL의 이해_2. Remote Thread

RootKit

Root 권한을 쉽게 얻게 해주는 Kit

  • Application Level RootKit 

    • User Level에서 비주얼스튜디오로 만들수 있을 정도의 단계
    • Linux/Unix 계열에서 주로 사용
    • Windows의 경우 task.mgr을 지우고 내가 지정한 걸로 바꿔치기] GUI 로 하기 어려움
    • WFP(Windows File Protection) ;윈도우의 중요시스템파일을 보호하는 기능
    • 모니터링하여 삭제, 수정(Hooking등의 경우)되면 복구
    • cf) DEP: 코드가 아닌 영역을 보호

  • User Level Rootkit

    •  작업관리자, Process Explorer, ls 등의 프로세스 공간에 침투하여 기계어 코드나 IAT, EAT 등을 수정하여 지정한 프로세스를 출력




실습


공격대상에게 악성코드 exe파일을 실행시키면 프로세스를 출력했을 때 안나도록 만들기



  • '프로세스 목록을 출력'  소스코드




CreateToolhelp32Snapshot
현재 사용중인 프로세스목록을 사진을 찍어서 보여주는 함수



실행
목록이 있는 창이 뜨는데 
이 창을 안보이도록 만들어보기

IAT Hooking
: DLL 바인딩 후 IAT 를 변경해 다른 값 창출

이때, C코드로만 보면 문법안에 갇혀있기 때문에 디버깅하여 보면 더 잘 보임


방법 

프로세스목록을 사진으로 찍고 목록을 가져오는 과정을 반복하는데 
이때 스냅샷을 가지고 왔을 때 지워버리기

  BOOL ret=Process32First( hProcSnap, &pe32 );
  printf("%s:%d\n",pe32.szExeFile,pe32.cntThreads);
  while(Process32Next( hProcSnap, &pe32 )) {
  printf("%s:%d\n",pe32.szExeFile,pe32.cntThreads);
  }
이 부분을 중점으로 해서 디버깅
다음으로 이어지는 함수라서



  •  Process32Next


00401080 ---3F만큼이동---> 004010c4



Process32Next 함수가 진행되는 주소 : 00402008
map으로 위치를 가늠


00402000 : Imports Addr. Table(IAT)
Process의 입장에서 IAT임

IAT 

- 외부모듈에서 Export한 함수(;DLL의 함수) 중에서 현재 모듈에서 사용하는 함수의 시작주소를 적어놓은 표



7C864F68 : kernel32의 dll 함수의 시작주소




IAT부분
이부분을 바꿔서 창이 안뜨도록

=IAT Hooking


  • 수동으로 수정하기




[ Dependency Walker ]
1CAFA - ExitProcess
7C800000 - Image base
=7C81CAFA - ExitProcess 주소



함수가 시작하는 부분을
Exit Process 로 바꿔서 진행



결과값이 바뀜


 (원래의 값대로 진행했을때)




DLL Injection

DLL을 만들어 수정되도록 하기

  • Remote Thread 생성


PE파일 프로세스가 진행될때 DLL를 삽입하여 진행하도록




    •  DLL소스파일


  • OpenProcess : 프로세스 핸들을 얻을때 사용하는 함수
  • VirtualAllocEx : VAS에 새로운 공간할당요청하는 함수
    • hProcess1 : 할당받은 남의 프로세스 핸들
    • 4096 :클러스터 단위(0x1000)
    • Reserve & COMMIT : 예약과 수요
      • MEM_COMMIT: 4096모두필요
  • WriteProcessMemory: 다른 프로세스의 VAS에 데이터를 기록하는 함수
    • strAddr1: 할당된 시작주소
    • lstrlen:문자열을 입력




 openprocess함수



 commit 값이 1000으로


Processlist.exe를 보면 1000이 들어오는게 보임





할당받은 주소인 3F0000 을 dump 떠보면 agent.dll이 들어온게 보임



 위의 함수부분의 디버깅부분



함수 시작주소에서의 주소


주소-이미지베이스=함수값 확인이 됨
[7C8104BC]-[7C800000]=[104BC]


  • 진행


Processlist.exe를 animate over 걸어놓고 Injector.exe를 실행하면 agent.dll이 LoadLibrary.dll에 따라 들어가게 된다.


 agent.dll에 확인을 위하여 메세지박스를 설정함



Processlist.exe에 agent.dll이 확인됨

Wednesday, January 23, 2019

SNORT IPS 설치 및 설정

2019-11-15

SNORT IPS 설치


  필수 패키지 설치


  • apt-get -y install flex bison build-essential checkinstall libpcap-dev libpcre3-dev libmysqlclient-dev libnetfilter-queue-dev iptables-dev libdnet-dev
    • flex : 텍스트 패턴 생성
    • bison : GNU Parser ( Parser: Parse + er = 구문분석 + 하는 놈 =구문분석 하는 툴)
    • build-essential : 소스코드를 컴파일하는데 필요한 최소한의 도구모음
    • checkinstall : 소스코드를 컴파일이 된 것을 패키지로 만들고 실제로 설치도 해준다.
    • libpcap-dev : libpcap 개발자 버전
      • libpcap : 리눅스/유닉스용 Packet Capture Library ( 윈도우용은 WinPcap) 
      • dev -> devlopment -> 개발자들을 위한 라이브러리
    • libpcre3-dev : 개발자용 pcre 라이브러리
      • libpcre3 : pcre 라이브러리
      • pcre : Perl Compatible Regular Expression = 펄 호환 정규화 표현식
      • Perl : 스크립트 언어의 한 종류, 문법이 쉽고 활용 범위가 넓다.
    • libmysqlclient-dev : 개발자용 libmysqlclient -> Snort가 탐지한 내역을 DB에 저장하려고
      • libmysqlclient : mysql client 용 라이브러리
    • libnetfilter-queue-dev  : 
      • libnetfilter-queue(NFQUEUE) : iptables로부터 패킷을 전달받는 역할 (NFQUEUE)
    • iptables-dev : 개발자용 Ipatables(방화벽)
    • libdnet-dev : libdnet 개발자용
      • libdnet : 네트워크 관련 정보 확인, 수정, 방화벽 제어, 패킷생성/전송


  작업 디렉토리 생성


  • mkdir -p /root/snort-install
  • cd /root/snort-install


  libdnet 컴파일 설치


  • libdnet 최신버전이 아닌 1.12버전을 필요로하기 때문에 어쩔수 없이 다운받아 설치
  • wget http://ftp.psu.ac.th/pub/snort/libdnet-1.12.tgz
  • tar zxvf libdnet-1.12.tgz
  • cd libdnet-1.12
  • ./configure "CFLAGS=-fPIC"   //빌드(컴파일) 할  옵션을 지정하는 과정
  • make    //실제 컴파일(빌드) 과정
  • checkinstall -y    //CheckInstall will build a .deb package and install it. 
  • dpkg -l |grep libdnet   //패키지 설치 확인
  • ln -s /usr/local/lib/libdnet.1.0.1 /usr/lib/libdnet.1


  DAQ 컴파일 및 설치


  • 설명: Data AcQuisition : 데이터 수집
    • 참고 https://snortrules.wordpress.com/2010/10/22/snort-2-9-0-%EC%9D%98-daq-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EA%B8%B0%EB%8A%A5/
  • 스노트가 공격탐지할 때 필요한 정보를 제공하는 역할
    • cd /root/snort-install
    • wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz
    • tar zxvf daq-2.0.6.tar.gz
    • cd daq-2.0.6
    • ./configure
    • make
    • checkinstall -y       //CheckInstall will build a .deb package and install it.
    • dpkg -l |grep daq


  Snort 설치


  • cd /root/snort-install
  • wget https://www.snort.org/downloads/snort/snort-2.9.11.1.tar.gz
  • tar zxvf snort-2.9.11.1.tar.gz
  • cd snort-2.9.11.1
  • ./configure --enable-sourcefire
  • make 
  • checkinstall -y       //CheckInstall will build a .deb package and install it.
  • ln -s /usr/local/bin/snort  /usr/sbin/snort
  • ldconfig -v   //설치 확인(버전 체크)
  • snort -V   //설치 확인(버전 체크)


[ 실습 ]

              1. IPS Rule 설정
              2. IPS 차단 필터 설정


Snort Rule 설치



  • Snort.org 로그인
  • Step3 에서 Registered Rules 클릭
    • 로그인 하고 다운받아서(웹) 
  • tar -xvfz snortrules-snapshot-29111.tar.gz -C /etc/snort


내부/외부 IP 설정하기


  • 이 실습은 라우터 모드 IPS로 구성하는 것이 목표이므로 내부와 외부로 영역을 정하고  IP주소 및 네트워크 설정을 해준다.

[참고] sopos와 pc대역 연결 하기 
sopos 라우팅 테이블에에 사용 하는 pc대역 설정

sopos# : route add -net 113.61.75.0 netmask 255.255.255.0 gw 113.61.64.1 dev eth0

sopos# : route add -net 113.61.75.0(사용하는 pc대역) netmask 255.255.255.0 gw 113.61.64.1(우분투 ip) dev eth0(우분투와 연결되어 있는 네트워크 장치 번호)

라우터 모드로 설정하기(우분투)


  • vi /etc/sysctl.conf
    • net.ipv4.ip_forward=1    //주석제거하고 ,설정값을 1로 설정, 설정값 1은패킷 포워딩 허용의 의미
  • sysctl -p    //설정확인
  • reboot    //재부팅해야 적용됨


Snort 설정


  • mv /etc/snort/etc/* /etc/snort
  • vi /etc/snort/snort.conf
    • ipvar HOME_NET 192.168.0.0/24  //보호할 네트워크
    • ipvar EXTERNAL_NET !$HOME_NET
    • var RULE_PATH /etc/snort/rules
    • var SO_RULE_PATH /etc/snort/so_rules
    • var PREPROC_RULE_PATH /etc/snort/preproc_rules
    • var WHIE_LIST_PATH /etc/snort/rules
    • var BLACK_LIST_PATH /etc/snort/rules

    !!!! 주의 
   - HTTP 전처리기 설정에서 처리할 수 없는 오류 발생
   324번줄 \(BackSlash) 제거
   325줄 주석처리 (맨앞에 # 추가)  --> webroot no 이거 제거하려고
   326 주석처리 (맨앞에 # 추가)  --> decompress_swf 이거 제거하려고
   326 주석처리 (맨앞에 # 추가)  --> decompress_pdf 이거 제거하려고
   !! 룰 파일의 버전에 따라 줄번호가 조금 차이가 있을 수 있음.. 잘 확인하시오.
   
   touch /etc/snort/rules/white_list.rules --> 파일이 없어서 snort 실행시 에러발생
   touch /etc/snort/rules/black_list.rules --> 파일이 없어서 snort 실행시 에러발생
   mkdir /usr/local/lib/snort_dynamicrules  --> 디렉토리가 없어서 snort 실행시 에러발생

기본 룰 추가


  • 설치한  Registered Rules에 포함된 룰이 부실하므로 추가적으로 다운로드하여 추가한다.
  • https://raw.githubusercontent.com/eldondev/Snort/master/rules/icmp.rules


IPS 로 구동시키기


  • 차단 필터 구성
    • vi /etc/snort/snort.conf  맨밑줄에 추가
    • rate_filter gen_id 1, sig_id 181818, track by_src, count 2, seconds 10, new_action drop, timeout 30

  • Snort 가동 & 방화벽 연동
    • snort -Q --daq nfq --daq-mode inline --daq-var queue=0 -c /etc/snort/snort.conf  -A full -l /var/log/snort -K ascii
    • iptables -A FORWARD -j NFQUEUE --queue-num 0


Snort IPS 백도어 탐지 및 차단을 위한 기본 설정

2018-11-20 

Snort IPS 백도어 탐지 및 차단

작업 디렉토리 생성

  • mkdir -p /root/snort-install
  • cd /root/snort-install


libdnet 컴파일 설치

  • libdnet 최신버전이 아닌 1.12버전을 필요로하기 때문에 어쩔수 없이 다운받아 설치
  • wget http://ftp.psu.ac.th/pub/snort/libdnet-1.12.tgz
  • tar zxvf libdnet-1.12.tgz
  • cd libdnet-1.12
  • ./configure "CFLAGS=-fPIC"   //빌드(컴파일) 할  옵션을 지정하는 과정
  • make    //실제 컴파일(빌드) 과정
  • checkinstall -y    //CheckInstall will build a .deb package and install it. 
  • dpkg -l |grep libdnet   //패키지 설치 확인
  • ln -s /usr/local/lib/libdnet.1.0.1 /usr/lib/libdnet.1


DAQ 컴파일 및 설치

  • 설명 : Data AcQuisition : 데이터 수집
    • 참고 https://snortrules.wordpress.com/2010/10/22/snort-2-9-0-%EC%9D%98-daq-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EA%B8%B0%EB%8A%A5/
  • 스노트가 공격탐지할 때 필요한 정보를 제공하는 역할
    • cd /root/snort-install
    • wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz
    • tar zxvf daq-2.0.6.tar.gz
    • cd daq-2.0.6
    • ./configure
    • make
    • checkinstall -y       //CheckInstall will build a .deb package and install it.
    • dpkg -l |grep daq


Snort 설치


  • cd /root/snort-install
  • wget https://www.snort.org/downloads/snort/snort-2.9.11.1.tar.gz
  • tar zxvf snort-2.9.11.1.tar.gz
  • cd snort-2.9.11.1
  • ./configure --enable-sourcefire
  • make
  • checkinstall -y       //CheckInstall will build a .deb package and install it.
  • ln -s /usr/local/bin/snort  /usr/sbin/snort
  • ldconfig -v   //설치 확인(버전 체크)
  • snort -V   //설치 확인(버전 체크)


# Snort Rule 설치


  • Snort.org 로그인
  • Step3 에서 Registered Rules 클릭
    •  로그인 하고 다운받아서(웹) 
  • tar -xvfz snortrules-snapshot-29111.tar.gz -C /etc/snort


# Snort 설정


  • mv /etc/snort/etc/* /etc/snort
  • vi /etc/snort/snort.conf
    • ipvar HOME_NET 192.168.0.0/24  //보호할 네트워크
    • ipvar EXTERNAL_NET !$HOME_NET
    • var RULE_PATH /etc/snort/rules
    • var SO_RULE_PATH /etc/snort/so_rules
    • var PREPROC_RULE_PATH /etc/snort/preproc_rules
    • var WHIE_LIST_PATH /etc/snort/rules
    • var BLACK_LIST_PATH /etc/snort/rules

   !!!! 주의 

   - HTTP 전처리기 설정에서 처리할 수 없는 오류 발생
   324번줄 \(BackSlash) 제거
   325줄 주석처리 (맨앞에 # 추가)  --> webroot no 이거 제거하려고
   326 주석처리 (맨앞에 # 추가)  --> decompress_swf 이거 제거하려고
   326 주석처리 (맨앞에 # 추가)  --> decompress_pdf 이거 제거하려고
   !! 룰 파일의 버전에 따라 줄번호가 조금 차이가 있을 수 있음.. 잘 확인하시오.
   
   touch /etc/snort/rules/white_list.rules --> 파일이 없어서 snort 실행시 에러발생
   touch /etc/snort/rules/black_list.rules --> 파일이 없어서 snort 실행시 에러발생
   mkdir /usr/local/lib/snort_dynamicrules  --> 디렉토리가 없어서 snort 실행시 에러발생

탐지 룰 추가 (icmp)


  • 설치한  Registered Rules에 포함된 룰이 부실하므로 추가적으로 다운로드하여 추가한다.
    • https://raw.githubusercontent.com/eldondev/Snort/master/rules/icmp.rules


# IPS 로 구동시키기


  • 차단 필터 구성
    • Beast 백도어 탐지 룰(Direct Connection)
      • vi /etc/snort/rules/icmp.rules
        • alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"ICMP Large ICMP
        • Packet"; dsize:>800; reference:arachnids,246; classtype:bad-unknown; 
        • sid:499; rev:4;)
      • vi /etc/snort/rules/backdoor_test1.rules
        • alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Backdoor beast2.07
        • Connection"; flow:to_server,established; content:"666"; offset:0; depth:12; sid:181818;  rev:1)
    • 차단 필터 구성
      • vi /etc/snort/snort.conf  맨밑줄에 추가
        • rate_filter gen_id 1, sig_id 181818, track by_src, count 2, seconds 10, new_action drop, timeout 30
        • rate_filter gen_id 1, sig_id 499, track by_src, count 3, seconds 10, new_action drop, timeout 10
    • Snort 가동
      • snort -Q --daq afpacket --daq-mode inline --daq-var queue=0 -c /etc/snort/snort.conf  
    • A full -l /var/log/snort -K ascii -i enp0s3:enp0s8
 

    !! afpacket : Layer 2 방식 지원



  • 탐지 로그 실시간 확인
    • tail -f /var/log/snort/alert

  • 공격테스트 (Large ICMP)
    • ping -l 1000 호구IP주소

  • 비교테스트(일반 ICMP Echo)
    • ping 호구IP주소

Tuesday, January 22, 2019

Buffer Over Flow RTL / ROP

2019-01-21

DEP Policy

  • DEP 정책은 Data, Heap, Stack Section에서 코드의 실행을 방지
  • 앞에서 수행했던 RET 기반의 공격과 SEH 기반 공격에서 쉘코드가 Stack에 존재하므로 DEP에 의해 쉘코드의 실행이 방지됨



RTL

Return To Library

bufferoverflow에 취약한 소스코드

  • Stack에 존재하는 RET 명령에 의해 수행되는 Return Addr.주소에 Library 함수 주소를 입력하고 Library 함수가 참조하는 인자영역에 알맞은 인자를 구성함으로써 실행 가능한 영역에서만 실행하여 원하는 PAYLOAD를 실행시킬수 있다
  • SEH기반인 경우 ADD ESP, xx-RET 명령을 통해 원하는 구성된 RTL 영역을 실행시키게 할수 있다



Direct-RET (Return to Shell code)
Trampoline (Return to JMP ESP)
NOP Slide
DEP: Trampolin 과 NOP Slide 를 막을 수 있음
RTL을 이용하여 다시 뚫음 - Windows에서는 사용이 어려움
ROP : RTL 대신 사용하는 ROP
ASLR
ROP : Static DLL에 대하여 사용(ASLR의 부족한 부분에 대해)



ROP
Return Oriented Programming


  • ByPass DEP

    • RTL 구성
    • ShellCode를 실행 가능한 영역으로 복사 후 실행
    • ShellCode를 실행 가능한 영역으로 설정 후 실행
    • ShellCode를 실행하기 전에 DEP 설정 변경 후 실행 (단, Permanent Flag에 영향을 받음)

  • ROP
    • 기본 개념은 RTL과 동일
    • 프로그램 내부에 있는 Module의 실행가능한 영역에 있는 가젯을 이용하여 공격코드 생성
    • ROP를 이용하여 RTL을 구성할 수 있으며, 보통 RTL의 구성 목적은 ShellCode가 있는 영역을 실행가능하게 하거나, 실행가능한 영역으로 복사하거나, DEP정책을 수정하게 끔 구성
  • Gadjet
    • 기계어코드의 끝에 ret명령을 포함하는 명령의 집합
    • ret명령으로 Gadjet이 실행된 후 Gadjet의 ret명령에 의해 다음 Gadjet을 실행
    • Gadjet을 연속으로 호출하여 원하는 명령을 수행
    • Gadjet 사용 조건
      • NULL이 입력되지 않아야 하는 경우 주소에 NULL이 포함되지 않게 함
      • 가젯이 존재하는 모듈은 주소가 변경(ASLR)되지 않아야 함
  • Weapon
    • DEP를 우회하기 위해 사용되는 Windows API
    • DEP를 우회하기 위한 접근방식
      • RTL(Return To Library) 방식을 이용
      • 대상 프로세스의 DEP 정책을 변경 후 ShellCode 실행
      • ShellCode가 존재하는 메모리 영역을 실행가능한 영역으로 변경 후 실행
      • 새로운 실행가능한 영역을 할당 후 ShellCode를 복사한 후 실행
    • 환경에 따라 구성이 가능하거나 용이한 API를 선정하여 ROP Chain 구성
    • https://msdn.microsoft.com/en-us/library/windows/desktop/aa366898(v=vs.85).aspx




Sunday, January 20, 2019

칼리를 이용한 무선랜해킹

무선 랜 해킹 

Wireless LAN Hacking

: wifi 해킹

Wireless

  • Wireless network

    • 공기로 연결 : 주파수신호로 Data 송수신
    • IEEE  802.11

  • ISM Band

    • Industry Science Medical
    • 산업, 과학, 의료분야에서 무료로 사용할 수 있는 주파수 대역
    • Wireless LAN에서 2.4GHz, 5GHz대역 사용

  • Wifi

    • Wifi Alliance (WFA) : 국제 비영리 민간단체

  • Wireless LAN 구성요소

    • STA (Station)
      • 스마트폰, 스마트기기, 노트북, WLAN card를 장착한 Desktop 등
    • AP (Access Point)
      • 유.무선 통신을 연결하는 역할
      • Wire Network의 스위치와 비슷하게 전달받은 데이터를 다른 쪽으로 중계
      • == 공유기

  • Wireless LAN Structure

    • Infrastructure Network
      • AP와 Wire Network를 연결하여 외부네트워크와 통신이 가능한 구조로 만든 wireless LAN Network
      • 모든 통신은 반드시 AP를 거침
    • Ad-Hoc Network
      • AP없이 내부단말기로만 구성된 PTP형식
      • 외부와 통신 불가하나 하나의 Station을 AP처럼 사용

  • Wireless LAN 관련용어

    • BSS (Basic Service Set)
      • WLAN에서 최소단위의 네트워크
      • 주소로 BSSID를 사용
      • 동일한 BSS내에 있는 AP와 STA간에 통신이 일어남
    • BSSID (Basic Service Set Identify)
    • SSID (Service Set Identifier)
      • 동일한 네트워크에 소속된 장비는 모두 같은 SSID를 가짐
      • 32 byte
    • ESS (Extended Service Set)
    • ESSID (Extended Service Set Identifier)

  • Wireless LAN Card Mode

    • Managed mode
      • STA에서 AP로 통신할 때 사용
      • 모든 통신의 진행을 AP에 맡김
    • Ad-Hoc mode
      • STA들이 직접 통신

  • CSMA/CA

    • 동작방식 
      • 송신측에서 네트워크가 유후(idle)상태임을 탐지후 수신측으로 RTS전송
        • RTS사용유무는 선택할 수 있음
      • 수신측에서 CTS 전송하여 요청을 확인 응답함
      • 송신 측에서 데이터 전송
      • 수신 호스트 확인 응답
      • IFS
        • Inter-Frame Space
        • 충돌을 회피하기 위해 Data전송하는 간격을 줘서 매체에 대한 접근을 지연
      • NAC
        • RTS를 보낼 때 ACK까지 받는 시간을 계산한 값으로 NAV값을 다른 station에 전송하여 충돌을 사전에 피할수 있음

  • WLAN 연결방식

    • Discovery(탐색)
      • STA이 연결할 AP를 찾는 과정
      • 수동탐색 / 능동탐색



실습


KALI
 " 모니터모드로 바꿔서 스니핑하기위한 용도 "


모니터모드가 기본 세팅


iwconfig
무선랜카드 연결확인하는 명령어



VMware Workstation 우측 상단 바에 무선랜카드가 연결되었을 때 표시됨


airmonitor


모니터모드일 때는 무선랜카드 모드가 뜨면 안됨


모니터 모드 시작


모니터 모드로 잘 실행중


airodump-ng --help
ariodump-ng wlan0mon(이름)

BSSID : MAC Addr.
CH : Channel 번호
ENC : 암호화
CIPHER : 알고리즘
AUTH : Authentcation 인증




802.11 Security


  • Hidden SSID 설정
    • Beacon Frame에서 SSID를 Broadcast하지 않도록 설정하면 주위에서 AP가 존재하는지 알 수 없음
    • WLAN Scanning
      • 무선랜카드에는 2.4GHz에서 여러개의 채널 중에 고정된 채널이 있으므로 선택해서 사용
      • 따라서, 채널과 SSID는 기본적으로 알고 있어야함






실습

무선랜을 스캐닝하여 하나를 선택해 모니터링하면, 연결된 핸드폰의 맥주소를 확인할 수 있음
-> 연결을 강제로 끊었다가 다시 연결시키도록하여 연결될때 정보를 snoofing

 스캐닝


  • ch6번으로 찾아보기

스캐닝
airdump-ng--이름 --bssid 주소 이름
BSSID && STATION 내용 확인이 가능




  • 연결끊기

    • Data 생성 및 Injection 도구
      • aireplay-ng -0
    • aireplay-ng
      • aircrack0ng Suite에 포함되어 있는 공격용 무선 Data생성 및 Injection도구
      • aireplay-ng -0 인증 해제 프레임수 -a AP MAC주소 -c Station Mac Addr. 장치명





WEP Crack

WEP
Wired Equivalent Privacy

  • IEEE 802.11 LAN 표준에 규정되어 있는 WEP 암호화 방식
  • 무선 네트워크에서 전송되는 프레임들을 WEP 비밀 키와 임의로 할당되는  IV로 조합된 KEY를 RC4알고리즘을 이용하여 암호화하는 방식
  • WEP 비밀키는 사용자가 입력한 암호문으로부터 4개가 생성, 이를 2비트의 KeyID로 각각을 구분하고 이 키중 하나를 선택하여 MAC Frame에 대한 WEP 암호화에 사용
  • WEP 암호화 방식은 64비트(WEP)와 128비트(WEP2)방식이 있음
    • 64bit : 비밀키(40bit) + IV(24bit)
    • 128bit : 비밀키(104bit) + IV(24bit)


Kali를 이용하여 WEP Crack


  • WLAN Scanning을 통해 공격 대상 선정
  • 모니터모드로 바꾼 뒤 airodump-ng
  • 기본설정
    • wep로 공유기 설정+ 비밀번호
    • 핸드폰으로 공유기에 접속
  • 해킹시작
    • 공유기만 타겟팅해서 스캐닝(Channel+bSSID) -w(캡쳐한 파일을 생성하는 옵션)
    • 다른 터미널 ARP Packet발생시키기
    • airckrack으로 캡쳐한 파일을 크랙킹
      • 5000개 이상이어야 툴이 작동함


  • WLAN Scanning을 통해 공격대상 선정






  •  WEP Crack을 위해 IV 값 수집


airodump-ng wlan0mon --channel [채널번호] --bssid [AP의 MAC주소] -w [저장파일명]
ls 해서 저장중인 파일 명을 찾아서 입력




  •  IV값 수집을 위한 패킷 인젝션

aireplay-ng -1 [시간] -a [AP의 MAC 주소] [장치명]
사용자나 데이터 발생량이 적으면 수집하는데 오래걸림
-> AP에 강제로 데이터를 발생시켜 수집시간 단축



aireplay-ng -3 -b [bssid] [장치명]
ARP Reply를 강제로 발생시켜 데이터 양을 증가시킨다.



wepcrack-02.cap에 저장중


  • Aircrack-ng 



Aircrack-ng Suite 에 포함되어 있는 Key Crack 도구
aircrack-ng [파일저장명]





WPA Crack

WPA
WiFi Protected Access


  • WEP를 보완하는 암호화방식으로  WPA Version1, Version2가 있음
  • WPA Version
    • WEP키 암호화를 보완하는 TKIP(Temporal Key Integrity Protocol)라는 IEEE 802.11i 표준을 기반으로 함.
    • 인증 부문에서는 802.1x 및 EAP을 사용
    • 동적으로 키 값이 변경
  • WPA Version2
    • AES라는 데이터 암호화기능이 추가



  • WPA 키 교환 방식



    • Personal or Pre-Shared Key Mode
      • 개인용/SOHO용으로 사용
      • 대칭 키 방식, 동적으로 키 값이 변경
    • Enterprise(EAP/RADIUS) Mode
      • 기업용으로 사용
      • 인증 서버 사용


4-Way HandShake

동작의 핵심 : 사전 공유키와 다섯개의 매개변수를 이용하여 일대일 대칭키(PTK)라는 Session Key를 계산

  • AP와 Station은 PTK를 사용하여 모든 데이터를 암호화 함
  • 다섯 개의 매개변수 종류
    • Network SSID
    • 인증자 난스(ANonce)
    • 피인증자 난스(SNo
    • nce)
    • 인증자 맥 주소(AP의 MAC Addr)
    • 피인증자 맥주소(Station의 MAC Addr)



실습

사전대입공격



  • 공격대상 선정


무선랜카드를 모니터모드로 하고 airodump-ng로 공격대상 선정
88:36:6C:23:6C:EE 에 대하여 공격시도





  • 4-Way Handshake 패킷을 수집해야함



우측상단데 보면 WPA 로 바뀐것을 확인할 수 있음




  • 패킷 수집 내용 저장


hello파일에 저장




  •  패킷수집을 위해 기존 사용자 강제 인증해제


aireplay-ng -0 [인증해제패킷수] -a[bssid] -c[station mac주소] [장치명]

ls로 수집 저장 파일 확인




  • 캡쳐된 파일을 Dictionary Cracking 시도








Rogue AP


  • 회사 내의 보안정책을 따르지 않는 개인적으로 설치된 AP
  • 해커가 악의적인 목적을 가지고 회사 내부 네트워크에 침입하기위한 용도로 사용
  • 대부분의 경우 누구나 접속할 수 있는 공개 인증으로 사용


  • DHCP서버 운영을 위해 패키지 설정

    • apt-get update하고 isc-dhcp-server를 받는다
    • vi /etc/dhcp/dhcpd.conf에서 위와같이 설정을 바꾼다
      • 파일에 동적할당 정보를 입력



  • AP설정


Aircrack-ng Suite에 포함되어있는 도구
airbase-ng -c [채널번호] -essid [가짜SSID이름] [장치명]



  • 생성된 인터페이스 IP 할당


AP실행시 기본값 at0이라는 이름의 가상의 인터페이스가 생성됨
DHCP서버로 동적할당해줄 사설 네트워크의 게이트웨이로 설정



iptables -t nat -A POSTROUTING -o eth0 -j MAASQUERADE
공격대상이 할당받은 사설 IP주소로 외부와 통신할 수 있도록 주소변환 설정

echo 1 > /proc/sys/net/ipv4/ip_forward
주소 변환된 패킷을 라우팅할 수 있도록 커널 포워딩 설정




  • DHCP서버 인터페이스 설정


인터페이스 'at0'가 게이트웨이로 동작 할 수 있도록


서비스 실행


E4:B2:FB:43:C4:EF 가 내 핸드폰의 MAC주소
통신하는게 확인됨


패킷도 확인가능


2. MAC Filtering
 White List, Black List를 작성하여 인가된 MAC주소를 갖는 Station만 통신 가능
4. WPS
  AP와 Station이 일대일로 접속하는 보안방식
  PIN(개인정보 번호)방식과 PBC(버튼설정)방식
5. AP의 서비스 영역 조정
  허용하는 최소 데이터 전송률을 설정하여 관리 범위 밖에서의 통신이 불가능 하도록 설정



List

MobSF

MobSF는 오픈소스 모바일 앱 자동 보안 진단 프레임워크로 자동 분석 시스템 구축할 때 사용한다. 정정 및 동적 분석이 가능하며, Android, iOS, Windows에 대해 침투 테스트, 멀웨어 분석 및 보안 평가를 할 수 있다. 참고자료 필...