기본 콘텐츠로 건너뛰기

Wireshark에서 TLS/SSL 까보기

TLS/SSL 작업을 할 때 갑갑한 것 중에 하나가 - 당연하겠지만 - 트래픽 내용을 볼 수 없다는 것이다. 기껏 볼 수 있는 정보는 인증서를 포함한 몇몇 보여도 상관 없는 인증 과정 중에 일부분이다. 물론 NULL cipher를 서버와 클라이언트 모두 우선순위로 지원하도록 설정한다면, 인증이 끝난 뒤에도 트래픽을 볼 수 있지만, 그것도 최초 개발시기 이야기. 배포 바로 전에 QA하기 위한 클라이언트를 수정할 수는 없지 않은가. 클라이언트 수정 없이 패킷만 덤프해서 볼 수 있으면 얼마나 좋을까...

만약 서버측 PrivateKey를 알고 있다면, 트래픽을 까서 볼 수 있다. (이래서 PrivateKey 관리가 중요하다.) ssldump라는 유틸리티도 있지만, GUI를 깔꼼하게 사용할 수 있는 Wireshark에도 TLS/SSL을 까서 볼 수 있는 기능을 제공한다. 일단 Wireshark는 암호가 걸리지 않은 PEM규격 PrivateKey만 읽을 수 있으니, 암호가 걸린 PrivateKey를 변환해서 보도록 하자. 변환 방법은 공식위키 사이트를 애용해보자. (추측컨데 TLS/SSL 네고과정을 PrivateKey를 이용해서 SessionKey를 비롯한 패킷을 깔 때 필요한 정보를 얻어내어 덤프한 것을 바로 까서 보여주는 듯 하다. Proxy/MITM attack을 예상했는데, 그건 아닌 듯.)

키를 준비했다면, Edit-Preference를 들어가자.



왼쪽에 Protocol 트리가 보일 것이고, 거기에서 SSL을 선택하자.





여기서부터 중요한데, 이 부분이 Wireshark에서 불편한 부분이다. Wireshark에서 이 부분을 살짝 수정해준다면 좋으련만... 오른쪽 속성창에 RSA key list 항목이 보일 것이고, 그곳에 아래와 같은 형식으로 내용을 채워넣으면 패킷을 까볼 수 있다.

<IP>,<PORT>,<PROTOCOL>,<KEY_FILE_PATH>;<반복>

IP, PORT, PROTOCOL은 해당 키를 적용할 정보인데, PROTOCOL은 적당히 붙이도록 하자. KEY_FILE_PATH에는 암호가 없는 PEM형식 PrivateKey를 저장한 위치를 지정한다. 더 넣고 싶으면, 세미콜론을 붙이고 앞에 형식을 반복하면 추가할 수 있다. 예를 들면 아래와 같다.

127.0.0.1,7000,SSL,C:\mykey.pem;192.168.0.5,8000,SSL,C:\yourkey.pem

모두 준비하였으면, 패킷을 덤프하고, 알맞게 까여진(?) 패킷을 즐기면(?) 된다. 잇힝~*

댓글

이 블로그의 인기 게시물

버즈 라이브 배터리 교체

나는 버즈 라이브(SM-R180)가 좋은데, 평가가 별루였는지, 해당 스타일로 버즈를 더 이상 만들지 않고 있다. 아무튼, 오래 쓴 버즈 라이브 배터리가 슬슬 맛이 가기 시작해서, 블로그 를 참조하면서 분해 및 교체를 하였다. (진짜 쉬움) 요로코롬 위아래를 살짝 눌러주면 뚜껑이 벌어진다. 안쪽 플라스틱은 오른쪽은 분홍색, 왼쪽은 회색이다. 리본 케이블 살짝 들어내고, 기판을 떼어내면, 작은 나사가 있다. 나사를 풀고, 플라스틱을 걷어내면, 검은 양면 테이프로 고정된 CR1254 배터리가 보인다. 잘 쑤셔서(?) 꺼낸다. 새로운 CR1254 배터리를 넣는다. 음극이 아래로 가도록 하고, 분해의 역순으로 조립하면 된다. 조립할 때, 아까 풀었던 나사는 잊지 말고 꼭 조여준다. (까먹고 조립해서 다시 뜯고 조립함) 충전도 잘 되고, 소리도 잘 나는거 보면, 조립도 잘 된 것 같다. 이렇게 버즈 라이브의 수명을 강제로 늘렸다. 나중에 본체 배터리도 갈아야겠다.

Windows 에서 절전을 깨우는 장치 찾기

참조:  https://www.reddit.com/r/computer/comments/wquswv/windows_11_pc_wakes_up_every_time_i_move_usb/ powercfg /devicequery wake_armed powercfg /deviceenablewake "[DEVICE]" # $PROFILE function Get-WakeArmedDevices { $devices = powercfg -devicequery wake_armed if ($devices) { $devices | ForEach-Object { $_.Trim() } } else { Write-Host "No devices are currently armed for wake events." } } function Set-EnableWakeOnDevice { param( [string]$deviceName ) sudo powercfg -deviceenablewake $deviceName } function Set-DisableWakeOnDevice { param( [string]$deviceName ) sudo powercfg -devicedisablewake $deviceName }