리버싱

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

dladbru 2018. 3. 7. 15:03

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


반응형