효투의 세상 로딩중...
효투의 세상 로딩중...
반응형

앱이나 웹 또는 CS 프로그램 등 진단을 하다보면 HTTP 통신이 아니라 TCP로 통신하여

일반적인 프록시 방법으로 패킷 캡처가 안되는 경우가 종종 있다.

 

TCP 패킷은 WireShark로 캡처했을 때 아래 그림처럼 확인할 수 있는데 이 TCP 패킷을 버프로 캡처하여

변조하고 분석하려면 NopE Proxy라는 확장 프로그램이 필요하다

 

https://github.com/portswigger/nope-proxy

 

GitHub - PortSwigger/nope-proxy: Non-HTTP Protocol Extension (NoPE) Proxy and DNS for Burp Suite.

Non-HTTP Protocol Extension (NoPE) Proxy and DNS for Burp Suite. - GitHub - PortSwigger/nope-proxy: Non-HTTP Protocol Extension (NoPE) Proxy and DNS for Burp Suite.

github.com

 

깃허브에서 받아서 직접 추가해줘도 되고 버프 내에 익스텐더(Extender) 들어가서 App stroe가면 설치할 수 있다.

 

TCP 패킷은 포트포워딩을 통해서 Burp가 중간에서 패킷을 받는 구조이다

모바일 단말기 - Burp - TCP통신 앱

로컬PC - Burp - TCP통신 프로그램

 

TCP 패킷을 전송하면

와이어 샤크에서 TCP 패킷을 확인한다.

 

일단 로컬PC와 TCP프로그램 사이에서 패킷을 받을 대상이 필요하기 때문에 Kail Linux를 켜서 IP 확인을 해준다

이 때 칼리는 네트워크 설정을 Bridge로 설정해줘야하며 로컬PC는 LAN선이 연결되어있어야한다.

 

칼리에서는 포트포워딩 및 iptables 설정을 위한 사전 설정이 필요하다

sysctl -w net.ipv4.ip_forward=1

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #또는

iptables -t nat -A POSTROUTING -o eth0 $atp -j MASQUERADE 
# -j옵션이 인터페이스 이름으로 사용되는 옵션이기에
#MASQUERADE이 동작하지않을 수도 있어서 $atp를 넣어줌

iptables -A FORWARD -i eth0 -j ACCEPT

iptables -A FORWARD -o eth0 -j ACCEPT

 

이후엔 로컬 PC의 IP 설정이 필요하다

편집으로 열어서 기존 IP주소를 넣어주고 게이트웨이는 Kali의 IP를 넣어주면된다.

반응형

설정이 완료가 되었다면 Kali에서 와이어샤크를 통해 패킷이 잘 전달되는지 확인한다.

아래 사진처럼 로컬IP (테스트를 2~3번해서 위 사진과는 IP가 다름) 에서 통신하는 TCP 패킷이 칼리의 와이어샤크에

잡힌다면 설정이 잘된것이다.

이제 칼리에서 Burp를 실행해서 NoPE Proxy설정을 해주면 되는데

서버에서 로컬로 패킷을 주고받을 때 12553 포트를 이용하는 것을 확인할 수 있다.

Server Address에는 서버 IP를 적어주고

포트는 통일해서 적어주면된다.

칼리에서 netstat -ltup를 해보면 12553 포트가 LISTEN 상태인것을 확인할 수 있다.

이제 ipatables로 패킷이 오도록 포트 포워딩을 해준다.

iptables -t nat -A PREROUTING -p tcp --dport 12553 -j DNAT --to-destination 192.168.1.172

 

그리고 History를 확인해보면 TCP 패킷이 오고가는 것을 확인할 수 있다.

버프와 비슷하게 인터셉트도 가능하며 패킷변조또한 가능하지만 현재 TCP 패킷이 암호화되어 거의 분석 및 변조가

불가능하다.

암호화된 패킷을 평문으로 보려면 앱이나 프로그램을 디버거같은 리버싱도구를 이용하여

패킷을 암호화하는 함수를 찾아서 해결하는 방법이 있다.

NoPE 프록시 개발자가 TLS 패킷도 분석이 가능하다고 했지만 실제로 그 기능을 이용해보면

내가 보내는 패킷은 확실히 잘 나오지만 문제는 통신이 끊겨버려 서버에서 돌아오는 응답을 받을 수가 없다...

뭔가 오류가 있는건지 방법을 모르는건지 좀 더 공부가 필요하다

 

 

그리고 만약 영문은 잘나오는데 한글이 깨진다면

Hex값을 burp로 Base64로 인코딩 후 다시 그 Base64를 오픈웹에서 디코딩하면 볼 수 있다고한다.

 

반응형
  • hyotwo7658@gmail.com

복사 완료 👍