레이블이 Tool-Wireshark인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Tool-Wireshark인 게시물을 표시합니다. 모든 게시물 표시

4/17/2016

Wireshark를 이용하여 Window에서 USB 분석

1. Wireshark의 USB 분석 기능 

USB를 분석하기위해서는 별도의 USB 스니퍼 프로그램이 필요하며, 잘 설치된 경우 쉽게 Wireshark에서 분석가능하다.
회사 컴퓨터의 경우 USB 분석이 쉽게 잘되었는데, 이상하게 나의 개인노트북은 Wireshark에서 interface 부분에서 USB를 찾지를 못한다.

Wireshark의 USB의 분석기능의 핵심은 URB 분석이 될 것이며, 이는 USB Descriptor의 정의되어진 구조와 맞는지 확인을 하자.

이 부분을 조금씩 문제를 해결하기 위해서 아래와 같이 원인파악을 해보고 분석하려한다.

  • 개인 삼성 노트북의 USB 내부구성 
  1. USB Webcam 
  2. USB Buletooth 
  3. USB SD Card Reader (Host)
  4. Hub 구성 

상위와 같이 노트북 내부의 Device가 USB로 연결구성이 되어있다. (복잡하게 만들었군)
좀 더 확인을 하고자 하면 제어판의 장치관리자에서 확인하자.



  • USBPcap Driver 확인 
USB Capture를 위해 USBPcap Driver 설정확인



1.1 USBPcap 관련 설치 검증 및 관련 테스트 

일단 Hub의 각각의 Driver 정보를 확인하자.
그리고, Hub의 장치 Class GUID를 확인하자

  • USBPcap Class GUID 값 



  • 장치관리자에서 USB Hub의 장치클래스 GUID 확인
  1. 장치관리자->범용 직렬 버스 컨트롤러->Generic USB Hub->속성 
  2. 자세히->장치클래스 GUID 확인

       36FC9E60-C465-11CF-8056-444553540000


  • 레지스터 편집기에서 USBPCap 검색 
  1. regedit.exe를 실행
  2. 편집->찾기 USBPCap 검색
  3. 관련 장치 클래스 GUID 확인 

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class{36FC9E60-C465-11CF-8056-444553540000}\UpperFilters
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Class{36FC9E60-C465-11CF-8056-444553540000}\UpperFilters
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class{36FC9E60-C465-11CF-8056-444553540000}\UpperFilters

  https://github.com/desowin/usbpcap/issues/3



  • USBPcapCMD 값 Regedit 값 비교 
USBPcapCMD의 USBPcap1,2,3 과 같은 regedit에서 Class GUID를 찾지 못했다.


C:\Program Files\USBPcap\USBPcapCMD.exe 



USBPcap1,2,3을 Class GUID 아래와 같이 동일하지만 앞의 값은 다르다.
   f18a0e88-c30c-11d0-8815-00a0c906bed8

1 \\.\USBPcap1
  \??\USB#ROOT_HUB20#4&4f07082&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
    [Port 1] Generic USB Hub
2 \\.\USBPcap2
  \??\USB#ROOT_HUB20#4&1c0cc4&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
    [Port 1] Generic USB Hub
3 \\.\USBPcap3
  \??\IUSB3#ROOT_HUB30#4&1e43ead0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8} 


f18a0e88-c30c-11d0-8815-00a0c906bed8 관련사항
  https://docs.microsoft.com/en-us/windows-hardware/drivers/install/guid-devinterface-usb-hub


  • 레지스터 편집기 1차 검색
regedit에서 USBPcap 및 아래의 값으로 검색을 해보면 아래의 값을 찾을 수 있다
하지만 위와 동일 하지 않다. 장치 Class GUID가 맞지가 않다

ROOT_HUB20

  1. 4&4f07082&0
  2. 4&1c0cc4&0


  • 레지스터 편집기 2차 검색
f18a0e88-c30c-11d0-8815-00a0c906bed8로 검색을 해보면 USBPcap과 연결된 부분을 찾지를 못했다.

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\DeviceClasses{f18a0e88-c30c-11d0-8815-00a0c906bed8}

...


  • 개인노트북의 문제결론 
현재 내 개인 노트북은 USB가 꼬인것 같은데, 일단 직접 Command를 이용하여 각 기능을 기본으로 확인해보자.
아래와 같이 기본 캡쳐와 분석을 해보면 된다.
회사 컴퓨터는 잘되는데, 왜 내 개인 노트북이 문제인지 , 젠장.


2.1 USBPcapCMD이용한 기본 캡쳐 및 분석  

개인노트북에서 직접 USBPcapCMD 명령이용하여 USB 관련 부분을 캡쳐 해보고, 이를 분석해보자.
아래의 파일을 를 관리자 모드로 실행을 해주며,그냥 실행을 하였더니, WRITE가 허용이 되지 않았다.


C:\Program Files\USBPcap\USBPcapCMD.exe 


나의 개인노트북은 위와 같이 Filter 3번 (USBPcap3) 에 잡히는 것을 알수있으며, 우측 전용 USB3.0 Hub에 연결하여도, USB2.0 Hub에 부분에 연결해도 동일하다.
상위에 보듯이 Filter 3번 은 USB 3.0 Hub이며 이부분을 캡쳐해서 분석하자.

  • USB Data Capture 
  1. Select Filter to monitor를 Filter 3번(USBPcap3)로 설정
  2. 저장파일을 test.pcap 저장

  • Wireshark로 USB Data *.pcap 분석 
Ctrl+C로 캡쳐를 종료했다면 이제 test.pcap을 Wireshark를 이용하여 File->Open으로 test.pcap을 분석하자.

위와 같이 중요한 USB Descriptor 관련파일들을 확인을 할수가 있다.

USB Descriptor 부터 URB 분석까지 쉽게 분석이 가능



기본기능은 내노트북에서도 잘동작한다.

2.2 링크파일을 이용한 쉽게 이용 

상위 방법을 이제 간단히 링크로 만들어 쉽게 만들어보자.

  1. 바탕화면화면->새로만들기->바로가기 실행
  2. "C:\Program Files\USBPcap\USBPcapCMD.exe"



2.3  USBPcapCMD.exe 와 Wireshark.exe  기능확인 

cmd를 이용하여 USBPcapCMD.exe와 Wireshark.exe 옵션을 확인하자

C:\Users\JHLEE> cd C:\Program Files\USBPcap
C:\Program Files\USBPcap>USBPcapCMD.exe --help

C:\Program Files\USBPcap> cd C:\Program Files\Wireshark
C:\Program Files\Wireshark> wireshark.exe --help






2.4. Live Capture 기능 

개인노트북에서는 Wireshark에서 Interface가 USB가 잡히지 않아 아래와 같이 cmd.exe를 이용하여 강제로 실행을 했지만, Live Capture는 동작이 되지 않았다.

  • Live Capture 설정 
쉽게 파이프를 이용하여 아래와 같이 설정하자.
C:\Users\JHLEE> cd C:\Program Files\USBPcap
C:\Program Files\USBPcap>USBPcapCMD.exe -d \\.\USBPcap3 -o - | "C:\Program Files\Wireshark\Wireshark.exe" -k -i - 
Selected capture options result in empty capture.

캡쳐 중인 Wireshark 실행되고, 캡쳐모드로 동작하나 USB Capture는 동작되지 않는다.
원인분석을 위해서, 상위 로그내용을 "Selected .. " 부분을 소스에서 찾아보자

  • USBPcapCMD.exe 소스분석  
  start_capture 함수-> "Selected Capture options result.." 관련에러를 확인가능
  상위 에러가 발생하면 start capture 함수가 동작 되지 않는 것을 확인가능

  https://github.com/desowin/usbpcap/blob/master/USBPcapCMD/cmd.c


  • 단위 TEST 진행 
아래와 같이 설정변경하여 USBPcapCMD만  부분 TEST를 진행하자
-o 옵션에 파일명을 적고 실행해도 위와동일하게 에러 메시지를 본다.
하지만 -A 옵션을 추가하면 아래의 에러메시지는 없어지고 USBPcapCMD는 동작된다.

C:\Users\JHLEE> cd C:\Program Files\USBPcap
C:\Program Files\USBPcap>USBPcapCMD.exe -d \\.\USBPcap3 -o test.pcap
Selected capture options result in empty capture.

  • Live Capture 재설정 
이제 원인을 알았으니, 상위에러는 -A 옵션추가하여 다시 실행하면, 상위 에러로그는 사라지지만, Wireshark는 캡쳐 중일 뿐 아무런 동작되지 않는다.

또 다른 문제가 존재하는 것 같은데 추후 이부분을 더 알아보자.
(상위 장치 Class GUID 때문에  USB Interface를 잘 못찾는 느낌 인것 같은데)

C:\Users\JHLEE> cd C:\Program Files\USBPcap
C:\Program Files\USBPcap>USBPcapCMD.exe -d \\.\USBPcap3 -A -o - | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -  

아래와 같이 Capture Interface에 "-" 추가 되었지만 동작되지 않는다.




USBPcapCMD.exe 기본설명서
  http://desowin.org/usbpcap/tour.html

다른 Window USB Driver 설정참조 (*.inf 파일)
  https://blog.sverrirs.com/2016/04/reverse-engineer-usb-protocol.html

WireShark 이용한 USB Capture 부분 
  http://www.packetinside.com/2011/04/usb.html
  https://wiki.wireshark.org/CaptureSetup/USB

4/10/2016

Wireshark로 RTSP 와 H.264 분석

1. 개발 분석 환경 

RTSP Protocol을 인식하지 못한다면, Port문제 일수 있으니, IP Address와 Port를 찾아 이 관련 Packet을 RTSP로 Decode 시키면 자동으로 RTP도 전부 인식이 된다.

  • Network 분석환경 
  1. TEST Device: IP Camera  ( Target Device)
  2. TEST Program:  VLC Player ( Host Device)

  • Host의 VLC Player 환경설정 
  1. VLC의 네트워크 스트림 열기-> 네트워크 설정
  2. rtsp://192.168.1.168:8557/PSIA/Streaming/channels/2?videoCodecType=H.264

WIFI CaptureSetup
  https://wiki.wireshark.org/CaptureSetup/WLAN
  https://www.acrylicwifi.com/en/blog/how-to-capture-wifi-traffic-using-wireshark-on-windows/

2. Wireshark 설치

  • Wireshark Download
  https://www.wireshark.org/download.html


3. Wireshark 분석 및 설정 

Wireshark의 사용법은 간단하며, Capture 를 진행한 후 분석하거나, 다른 Capture된 파일을 분석을 하면된다. 

3.1 Wireshark의 기본 Filter 사용법

필터는 말그대로 전체 패킷 중에서 본인 원하는 패킷을 필터링하여 보고 싶은 것만 보는 것이다. 
간단히 예를 들면 

       ip.addr eq 192.168.1.168  : ip 주소가 source or destistion 검색 

필터에 관련된 내용을 외울 필요는 없으며, 개별 패킷에서 본인이 필터링 하고자 하는부분
or 관련부분 
즉 예를 들면 TCP의 Port 부분에 적용하고 싶다면 그곳에서 우측마우스를 눌러 Apply as Filter 기능으로 선택하면된다. 

하지만 빠른 사용을 위해서 본인이 간단히 and 와 or 연산을 조합하여 정교한 필터를 만들자.

3.2 H.264 분석 

Wireshark에서 H.264의 NAL를 분석에 대해 알고 싶어 이부분을 찾았다. 
  1. Capture를 한 후 RTP 분석에서 Payload Type을 확인한다. 
  2. Edit->Preferences->Protocols->H264  (H264 dynamic payload type 설정) 
  3. RTP Payload Type 설정을 해준다. 

  • RTP Packet에서 Payload Type 확인  


  • H264 dynamic payload type: 96 


  • 아래와 같이 H.264 기본분석 가능 
H.264의 FU부분만 나오고 더 이상은 Decode 되지않아 문제가 발생 이 부분은 추후 다시 한번 TEST



  • H.264 Fragmentation Units(FU)

  https://tools.ietf.org/html/rfc3984#page-27


3.3 Statistics 기능 사용

Statistic에서는 다양한 기능을 제공하는 데, 이를 이용하여 Protocol의 Flow 와 사용빈도 와 구조도 를 세부 분석이 가능하다

  • Statistics->Protocol Hierarchy 
프로토콜 구조도라는데, 사용빈도도 확인할 수 있고, 전체 구조를 확인 가능하다.




  • Statistics->IO Graphs
필터에 본인이 원하는 필터를 넣어 증가 추세를 확인 및 추적이 가능하며 각 Line을 본인이 직접설정이 가능하다.



  • Statistics->Flow Graph  
Protocol의 전체분석이 쉬어지고, 보기도 너무 쉽다.



  http://stackoverflow.com/questions/26164442/decoding-rtp-payload-as-h264-using-wireshark
  https://ask.wireshark.org/questions/35544/how-i-know-it-is-h264-packet-capture
  https://www.wireshark.org/lists/wireshark-users/201007/msg00162.html
  https://www.wireshark.org/docs/dfref/h/h264.html

9/08/2015

TCPDUMP 사용법

1. TCPDUMP 란?

wireshark(ethereal)에서 window에서 winpcap기능이라고 생각하면 되겠다.
ethernet에서 들어온 packet을 libpcap을 이용하여 capture를 한다.
tcpdump는 이를 필터링하여 보여주는 프로그램이다. (option으로 필터링이 가능)

  • TCPDUMP 사용 옵션
        tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]
               [ -c count ]
               [ -C file_size ] [ -G rotate_seconds ] [ -F file ]
               [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
               [ --number ] [ -Q in|out|inout ]
               [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]
               [ -W filecount ]
               [ -E spi@ipaddr algo:secret,...  ]
               [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
               [ --time-stamp-precision=tstamp_precision ]
               [ --immediate-mode ] [ --version ]
               [ expression ]


  https://linux.die.net/man/8/tcpdump

  • TCPDUMP 사용법 
tcpdump와 각 network interface 정의한 후 ssh server가 지원이 가능하다면, scp or sftp로 쉽게 가져오자

// Target Device
$ tcpdump -i eth0 -w data.pcap  // wireshark로 보기위해 저장 scp or sftp로 전송 
// Host Device 
$ scp or sftp로 data.pcap를 가져와서 wireshark로 분석 

상위에는 모든 Packet을 잡지만, Filter를 적용하여 원하는 packet만 capture 진행

  • Capture 시 필터 사용방법 
$ tcpdump -i eth0 port 80 -w data.pcap  // Filter 적용하여 저장 
$ tcpdump -i eth0 tcp port 8080   //  tcp port 8080만 필터 
$ tcpdump -i eth0 udp port 4433   //  udp port 4433만 필터 
$ tcpdump -i eth0 src port 1080   //  src port 1080만 필터  
$ tcpdump -i eth0 src 192.168.0.11 and dst 192.168.0.22     
$ tcpdump -i eth0 tcp          
$ tcpdump -i eth0 udp  

$ tcpdump -l | tee data.pcap  // 동일하게 data.pcap 저장  
$ tcpdump -l > dat & tail -f dat


  • Capture 된 Packet 분석 
$ tcpdum -r data.pcap  // 저장된 Packet 분석  
$ tcpdum -Xqnr data.pcap  // ASCII 값으로 분석 


  • 자세한 사용법
    http://wiki.pchero21.com/wiki/Tcpdump
    http://itnews.tistory.com/218
    https://www.tcpdump.org/manpages/tcpdump.1.html

  • How to build TCPDUMP on ARM  
    wireshark 처럼 libpcap은 필수 이며, tcpdump를 설치해야함
    http://dark2pee.tistory.com/entry/DM368-tcpdump-compile


1.1 SCP 사용방법 


  • Window 7/10  SCP Batch File 작성 Example

@ECHO OFF
TITLE WINDOW SCP EXAMPLE
ECHO ------------------------------------------------------------------------------------------------------
ECHO ---------------------------      Download         ---------------------------------------------------
ECHO ------------------------------------------------------------------------------------------------------
scp jhlee@192.168.1.10:/home/jhlee/test  .
PAUSE 

상위와 같이 Linux SSH Linux Server 로 접속하여 Window에서 가져오기
or
Window 의 경우  SSH Terminal Program SCP/SFTP를 지원을 해주는 프로그램사용
xshell,teraterm

  https://www.howtogeek.com/66776/how-to-remotely-copy-files-over-ssh-without-entering-your-password/


2. TCPDUMP의 Wireshark 분석

위 설명처럼 *.data를 download를 받아 wireshark를 이용하여 분석하자

아래의 링크예는 -s를 주어 packet의 양을 설정하는데, 귀찮아서 ctrl+c가 편함
   https://www.wireshark.org/docs/wsug_html_chunked/AppToolstcpdump.html


  •    linux에서 tcpdump로 잡은 dhcpd.cap 분석




3/07/2015

Android 의 TCPDUMP 설치 및 Linux Tool 설치(bash)

1. TCPDUMP

network packet을 dump하는 tool로 ethereal or wireshark와도 호환이 가능하며 세부옵션을 보면 wireshark 처럼 필터를 사용도 가능하다.
모든 tool이 그렇지만, 너무 많은 data는 grep으로 줄이자.

1.1 TCPDUMP Bin Download 

아래의 사이트에서 binary file을 제공해주고 있으며, Download하여 설치만 진행
  http://searchme.tistory.com/44

1.2 TCPDUMP 사용법 

이전에도 많이 사용했던 TCPDUMP를 Android에서 아래와 같이 tcpdump를 설치를 해서 패킷을 캡쳐하고, 이를 wireshark로 분석하자

$ tcpdump -i wlan0  -w wlan0.pcap    //  eth0.pcap  저장 후 이를 Wireshark에서 분석 
$ tcpdump -i eth0  -w eth0.pcap    //  eth0.pcap  저장 후 이를 Wireshark에서 분석 



$ tcpdump -i eth0 tcp port 8080   //  tcp port 8080만 필터 
$ tcpdump -i eth0 src port 8080   //  src port 8080만 필터  
$ tcpdump -i eth0 src 192.168.0.1   
$ tcpdump -i eth0 tcp 
$ tcpdump -i eth0 udp   


  http://www.tcpdump.org/tcpdump_man.html
  http://iniciel.blogspot.kr/2009/07/tcpdump-%EC%82%AC%EC%9A%A9%EB%B2%95.html

2. Android Perl 설치

Android에서 Perl를 설치하여 사용법
아직 필요하지 않아 사용을 해보지는 못하고 아래와 같이 링크만연결
  http://searchme.tistory.com/45

3. bash 파일 Download 및 설정

Android에서 bash를 설치하여 설정
   http://searchme.tistory.com/36


4. Android 관련기사

  • USB 키보드,마우스 연결을  블루투스 접속하여 사용 
       http://it.donga.com/19944/