諸行無常

by

존재하는 (거의) 모든 인터넷전화 SIP 계정 알아내기

SW 이야기

오랜만입니다.

이번에 업무상 필요로 K전화국에서 인터넷전화를 개통했습니다.

그런데 아무래도 고정된 장소에서 업무를 하는게 아니다보니 기왕이면 가지고 다닐 수 있었으면 좋겠습니다.

착신전환은 통화료가 발생하므로 피하고 싶습니다.

방법을 고민하다 SIP 계정을 빼내서 다른 단말기에 넣으면 되겠다는 생각이 들었습니다.

그래서 빼냈습니다.

방법

이 글에서는 그 방법을 서술합니다. 글이 너무 친절하면 아무나 따라하니까 약간 불친절하게 하기로 합니다.

  1. 먼저 아무 인터넷전화나 준비합니다. 이 글에서 서술하는 방법으로 진행하려면 DNS 서버 주소나 SIP 서버 주소 중 적어도 한 개는 변경할 수 있어야 합니다.
  2. SIP 서버 주소를 변경할 수 있으면 서버 주소를 로컬 주소로 변경한 후 6으로 건너뜁니다.
  3. 먼저 순정 상태의 SIP 서버 또는 SIP 프록시 서버의 도메인을 알아내야 합니다. Wireshark를 통해 SIP 패킷과 DNS 패킷을 유심히 보다보면 찾을 수 있습니다.
  4. 3에서 DNS 패킷을 도저히 찾을 수 없는 경우 SIP 서버 주소가 IP주소로 입력되었을 수 있습니다. 이런 경우 라우터 설정을 변경해서 로컬 IP가 SIP 서버 IP처럼 보이도록 라우팅해서 진행합니다. 6으로 가세요.
  5. 3에서 알아낸 도메인을 로컬 서버의 주소를 가리키도록 DNS 캐시에 독을 탑니다.
  6. 몇 번 재부팅하다보면 단말기가 접속 실패 오류를 띄우게 됩니다. 이제 모두 준비되었습니다.
  7. SIP MITM을 받아서 실행합시다.
  8. 단말기가 접속을 시도하면 계정과 패스워드가 표시됩니다. 이제 잘 쓰시면 됩니다.

왜 되는가?

과거에는 패스워드가 Basic 인증을 통해 암호화되지 않은채 전송되었습니다. 2010년 언저리였던 것 같은데, 이때 많은 분들이 myLG070 계정을 빼내서 사용하셨죠.

그런데 이게 문제가 되어 TTA에서는 SIP에 대해 Digest 인증을 권고하게 되어 이후 한동안 SIP 계정을 빼낼 수 없게 되었습니다.

그러나 호환성을 위해 단말기는 여전히 Basic 인증을 지원하고 있습니다. 이때문에 저는 단말기에게 가짜 서버를 알려주어 Basic 인증을 요구하면 될 것이라 생각했습니다.

그리고 이게 된 거죠.

보안 취약점이 아닌가?

이는 중간자 공격과 다운그레이드 공격을 수행합니다. 일종의 보안 취약점이라고 볼 수도 있습니다. 그러나 통신사 서버에만 붙으면 되는 일반적인 인터넷전화와는 달리 업무용 전화는 때때로 고객사의 PBX와도 동작이 가능해야 합니다. 따라서 제조사는 Basic 인증의 지원을 포기하기 어려운 상황입니다.

그렇다면 통신사는 SIP over TLS와 같은 다른 방법을 통해 충분히 SIP 계정의 노출을 방지할 수 있다고 생각되며 이것이 가장 정상적이고 합리적인 방법이며 보안성도 향상시킬 수 있으리라 생각합니다.

사족

굳이 통신사가 SIP 계정의 노출을 막으려는 이유를 저는 잘 모르겠습니다.