본문 바로가기
리버싱

응용프로그램에서 출력되는 https 패킷 까기

by dladbru 2018. 3. 7.

http에서 https로 많이 넘어가는 만큼, 앞으로는 WireShark를 사용하더라도 보지 못하는 패킷이 많아질것으로 생각된다.  일단 테스트코드만 아래와 같이 올린다.

cert_reqs=ssl.CERT_NONE 으로 설정함으로서 CA 에 인증되지 않은 키라고 하더라도 성공적으로 MITM 에 성공한다.

도메인은 wireshark로 따서 hosts를 조작하던가 리버싱을 통해 connect호출하는 부분의 IP를 바꾸자 ㅋㅋ


import socket, ssl
import time
import json
import ast


bindsocket = socket.socket()
bindsocket.bind(('', 9997))
bindsocket.listen(5)


def do_something(connstream, data):
    print "do_something:",data
    return len(data)
    

def deal_with_client(connstream,ssl_sock):
    while True:
        data = connstream.read()
        __size=do_something(connstream, data)
        ssl_sock.write(data) 
        recv_data=ssl_sock.read(99999)
        print "res: ",recv_data
        connstream.write(recv_data)
    print "end"
while True:
    newsocket, fromaddr = bindsocket.accept()
    connstream = ssl.wrap_socket(newsocket,
                                 server_side=True,
                                 certfile="x509-server.pem",
                                 keyfile="x509-server-key.pem")
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        ssl_sock = ssl.wrap_socket(s,
                           ca_certs=None,
                           cert_reqs=ssl.CERT_NONE)

        ssl_sock.connect(('127.0.0.1', 9999))

        deal_with_client(connstream,ssl_sock)
        ssl_sock.close()
    finally:
        connstream.shutdown(socket.SHUT_RDWR)
        connstream.close()

<Figure 0. Test Source Code>


#######################

#####예제 키 다운로드#####

#######################

x509-server.pem

x509-server-key.pem


반응형

댓글