# 무선 공격 환경 구축하기
- 무선 트래픽을 스니핑하고 802.11 프레임을 전송하는 코드를 만듦.
- HAWNU1(Hawking Hi-Grain USB Wireless-150N Network Adapter with Range Amplifier)를 사영하여 스크립트를
테스트함.
- 백트랙 5의 디폴트 드라이버는
>사용자가 무선 기기를 모니터 모드로 작동시키거나 프레임을 전송할 수 있도록 함
>추가적으로, 카드에 성능 안테나를 부착할 수 있게 해주는 외부 안테나 연결을 포함하고 있음.
1) Scapy로 테스트하기
- aircrack-ng를 사용하여 카드를 모니터 모드로 설정함.
- iwconfig를 통해 무선 어댑터가 wlan0인것을 알 수 있음
- airmon-ng start wlan0이라는 명령어를 통해 모니터 모드로 설정함
> mon0이라는 새로운 어댑터가 생성됨.
2) 파이썬 블루투스 패키지 설치하기
- CSR(Cambridge Silicon Radio)칩셋을 꽂고, 운영체제가 인식하는 지 확인함.
# WALL OF SHEEP - 무선 비밀 수동적으로 리스닝하기
1) 파이썬 정규표현으로 신용카드 정보 스니핑하기
- 파이썬 정규표현
'.' | 뉴라인 문자를 제외한 모든 문자 |
'[ab]' | 문자 a 또는 b |
'[0-9]' | 0부터 9까지의 숫자 |
'^' | 문자열 시작 |
'*' | 앞의 정규표현을 0번 또는 그 이상 일치시킴 |
'+' | 1번 또는 그 이상 일치시킴 |
'?' | 앞의 정규표현을 0번 또는 1번 일치시킴 |
{n} | 앞의 정규표현을 정확히 n번 일치시킴 |
ex. 3[47][0-9]{13} : 반드시 3으로 시작되도록하며, 그뒤에는 4나 7이 올 수 있고, 그 뒤에는 13개의 숫자가 오도록 함.
= 34, 37로 시작하며 총 15개의 숫자로 구성되어 있음.
2) 호텔 투숙객 스니핑하기
- sniff()로 트래픽을 리스닝함
- TCP 트래픽만 필터링하여 모든 패킷을 findGuest()로 전송함
- findGuest()가 패킷을 전송받으면 해당 패킷에 개인 정보가 저장되어 있는지 확인함.
- 페이로드의 콘텐츠를 raw 변수에 복사하여 정규표현을 만들어 고객의 성과 룸 번호를 처리함.
성 구분 정규표현 : LAST_NAME으로 시작하고 &로 끝나는 모든 문자열
룸 번호 정규표현 : ROOM_NUMBER로 시작하는 모든 문자열
※ 실제 이러한 정보를 수집행위는 법에 위반 될 수 있어 코드는 올리지 않는 것으로!
3) 무선 구글 키로거 만들기
- 브라우저 검색 할 때 : HTTP GET 요청
- q= 가 오는 것으로 검색이 시작되고 &로 끝남
- pq=는 바로 이전의 검색을 의미함
q= | 쿼리, 검색창에 입력한 단어 |
pq= | 이전의 쿼리, 현재 검색 바로 전의 쿼리 |
hl= | 언어, 디폴트는 영어 |
as_epq= | 정확한 구문 |
as_filetype= | 파일 형식, zip과 같은 특정 파일 타입으로 제한함 |
as_sitesearch= | www.2600.com과 과 같이 특정 사이트로 제한함. |
- 웹 브라우저는 스페이스를 +또는 %20로 인코딩함. 따라서 이 메시지를 정확하게 변환하기 위해서는 +나
%20을 공란으로 변환해야함.
- sniff() : TCP와 80번 포트의 트래픽만 캡쳐하도록 만듦.(443번 포트는 암호화되어 있어 별로 도움 안됨)
** 현재 wlan0을 인식하지 못해 브라우저 트래픽을 읽어오지 못함...
4) FTP 인증정보 스니핑하기
- FTP(파일 전송 프로토콜)은 사용자 인증정보를 보호할 수 있는 암호화 채널이 없음.
- 공격자는 사용자가 암호화되지 않은 네트워크로 이 정보를 전송하는 순간 손 쉽게 인증정보를 탈취할 수 있음.
- 인증정보를 캡쳐하기 위해서 두 개의 특정 문자열을 찾는다(1. USER와 사용자이름, 2. PASS와 패스워드)
- tcpdump와 마찬가지로 tcp 패킷의 데이터 필드에는 이러한 정보가 포함되어 있음.
# 노트북 컴퓨터를 사용한 곳은? 파이썬 방식
1) 802.11 프로브 요청 리스닝하기
- 컴퓨터와 휴대전화는 끊임없는 통신을 제공하기위해 선호 네트워크 목록을 유지하는 경우가 많음.
- 목록에는 과거에 성공적으로 연결한적이 있는 무선 네트워크의 이름들이 저장되어 있어 이후 컴퓨터는 자주 802.11 프로브 요청을 전송하여 목록에 있는 네트워크 이름을 검색함.
> 패킷에서 haslayer(Dot11ProbeReq)여부를 확인하여 802.11 프로브 요청만을 정리함.
> 만약 그 요청이 새로운 네트워크 이름을 포함하고 있따면, 화면에 네트워크 이름을 출력함.
2) 숨겨진 802.11 네트워크 찾기
- 대부분의 네트워크는 자신의 이름을 공개하지만, 일부 무선 네트워크는 네트워크 이름이 발견되지 않도록 SSID를 숨김.
- 802.11 비콘 프레임의 Info 필드에는 일반적으로 네트워크의 이름이 포함되어 있음.
> 숨겨진 네트워크의 경우 AP가 이 필드를 공란으로 남겨둠 > 공란인 것을 찾아 AP의 MAC주소를 출력함.
3) 숨겨진 802.11 네트워크 식별하기
- AP가 802.11 비콘 프레임의 info 필드를 공란으로 남겨두기는 하지만 프로브 응답에서는 이름을 전송함.
- 프로브 응답은 보통 클라이언트가 프로브 요청을 전송한 후에 발생함.
- 숨겨진 이름을 찾기 위해서는 802.11 비콘 프레임에 있는 MAC주소와 프로브 응답에 있는 MAC 주소가 일치할 때
까지 기다려야 함.
# FIRESHEEP 탐지하기
1) Wordpress 쿠키 재사용 탐지하기
- 세션 쿠키를 포함하고 있는 Wordpress HTTP 세션을 처리하는 파이썬 스크립트
- 이 공격이 암호화되지 않은 세션에서 발생하기 때문에 TCP 포트 80번의 HTTP프로토콜만 필터링 함.
- Wordpress 쿠키와 일치하는 정규표현을 살펴보면 쿠키의 내용을 한번에 화면에 출력할 수 있음.
- 클라이언트 트래픽만 살펴보기위해 "Set"을 포함하고 있는 서버의 쿠키는 출력하지 않음.
- firesheep을 사용하고 있는 공격자를 탐지하기 위해서는 다른 IP에서 이 쿠키값을 재사용하고 있는 지 확인해야 함.
>> 위의 스크립트 수정
- sessionID로 인덱화한 해시 테이블을 생성하여 Wordpress 세션을 보면 값을 해시 테이블에 저장하고, 해당 키와
관련된 IP주소를 저장함.
- 이전에 저장했던 키와 중복되는 키를 발견하여 충돌이 일어난다면 두 개의 다른 IP에서 동일한 쿠키를 사용하고
있다는 것을 알게 됨 -> Wordpress 세션 탈취하려는 것을 탐지함.
# 블루투스와 파이썬으로 스토킹하기
1) 주변 블루투스가 켜있는 장치 탐색하기
>> 'hcitool scan'이라고해도 bluetooth 장치를 검색할 수 있음.
2) 무선 트래픽으로 블루투스 주소 찾기
- 앞 경우에서는 장치검색이 가능한 장치들만 검색할 수 있음 > hidden privacy 모드로 사용하고 있으면 검색 불가능.
- hidden 모드에서 아이폰의 블루투스 공격하는 방법.
> 802.11 무선 어댑터의 MAC 주소에 1을 더하면 아이폰을 위한 블루투스 MAC주소를 얻을 수 있음.
> 802.11 무선 어댑터는 MAC주소를 보호하기 위한 2개층 통제를 사용하지 않기 때문에 단순히 스니핑하여
그 정보를 가지고 아이폰의 블루투스 MAC 주소를 계산 가능함.
- MAC 주소
> 처음 3바이트는 OUI(Oragizational Unique Indentifier)라고 불리는 제조업체를 나타내며 필터링됨.
> 기기 검색 중 OUI 데이터베이스가 3바이트라면 애플의 것임을 알 수 있음.
> 처음 3바이트가 일치하는 MAC주소를 가진 802.11 프레임을 리스닝하여 만약 탐지가 되면 그 결과를 화면에
출력하고 802.11 MAC주소를 저장함.
> 이를 통해 아이폰의 802.11 무선 어댑터의 MAC주소를 식별함.
> 아이폰의 블루투스의 MAC주소는 무선어댑터 MAC주소 + 1이므로 아이폰의 블루투스 MAC주소 역시 구함.
- MAC 주소를 가지고 있는 기기가 실제로 존재하는 지 알아보기 위해 장치이름검색을 실행할 수 있음.
> hidden 모드에서도 이 요청에 응답할 수있음
(비활성화되어 있어도 해드셋이나 자동차의 핸드프리와 연결되어 있는 경우 등은 hidden모드에서도 응답함).
3) 블루투스 RFCOMM 채널 스캔하기
- RFCOMM 연결은 TCP 소켓 연결과 매우 유사함.
- RFCOMM 포트에 연결하기 위해서 aRFCOMM-typeBluetoothSocket을 생성함.
- 다음으로, 공격대상의 MAC주소와 포트가 저장되어 있는 튜플을 connect()함수에 전달함.
- 전달에 성공한다면 RFCOMM 채널이 열려있고 리스닝하고 있다는 것을 알 수 있음.
4) Bluetooth Service Discovery Protocol 사용하기
- SDP(Bluetooth Service Discovery Protocol) : 블루투스의 종류와 기기에서 제공하는 서비스를 보여줌.
> SDP의 프로파일을 살펴보면 각 블루투스 프로토콜과 포트에서 실행 중인 서비스에 대한 설명을 볼 수 있음.
- find_service() : 호스트, 이름, 설명, 제공자, 프로토콜, 포트, 서비스 클래스, 프로파일, 서비스 ID 등의 기록을 반환함.
5) 파이썬으로 전화기 블루버그하기
- 블루버그 공격 : 인증되지 않고 보안적으로 안전하지 않은 연결을 통해 휴대전화의 세부내용을 가져오거나
휴대전화에 직접 명령어르 전송함. 이 공격은 RFCOMM 채널을 사용하여 AT 명령어를 내려서 원격에서 기기를
제어할 수 있도록 함.
> 공격자는 문자 메시지를 읽고 적을 수 있으며, 개인 정보를 수집하고 강제로 특정 번호로 전화를 걸도록 만들
수 있음.
'Security' 카테고리의 다른 글
패스워드 공격 - John-the-ripper를 이용한 zip 파일 풀기 (0) | 2022.10.13 |
---|---|
정보수집 (0) | 2020.03.29 |
2. 네트워크 트래픽 분석 (0) | 2020.03.21 |
1. 네트워크 트래픽 분석(PyGeoIP, Dpkt 패킷, 구글어스) (0) | 2020.03.14 |
포렌식 수사(메타데이터) (0) | 2020.03.13 |