백도어 공격 간에 아웃바운딩 포트와 인바운딩 포트를 헷갈리지 말 것
엊그제 4000 port에 대한 취약점으로 상위기관으로부터 침해대응 사고 탐지 건을 접수받았다. 처음에는 특정 포트에 대한 비인가 접근 공격이 가능한 취약점인가 하고 살펴보았으나, 공격 유형이 악성코드였다. 의문이 가서 그 기관에 연락해서 왜 악성코드인지 다짜고짜 물었다.
그러니, 해당 포트가 일전에 공격한 사례가 있는 취약점 포트 리스트에 필터링되어서 탐지 건으로 접수하였다고 말한다. 하지만 단지 해당 포트를 통해 공격을 한 거라면 비인가 접근이지, 왜 악성코드냐고?
대답하기를 "해당 포트는 주로 게임사 블리자드에서 사용하는 알려진 포트(well-known)인데 공격은 이미 클라이언트 호스트에 공격자가 침입한 뒤, 공격자가 클라이언트 호스트에서 본인의 서버로 접속시키기 위한(백도어 커넥션) 포트로 이용된 사례가 취약점으로 등록 [CVE-2016-5053], [XFDB-125040] 되었으므로"라고 했다면 충분히 납득이 되었을 것이다.
하지만 실무에 종사하는 사람은 오히려 실적 쌓기가 본연의 임무인지라 자신도 백도어 공격에 관해서는 잘 모르지만 이것이 본인이 관리하고 있는 포트 블랙리스트에 걸리는 거라 이관시킨 거라 답하였다.
역시 토스가 지지리도 나쁘면 스파이크도 허접일 수밖에 없다. 그렇게 답한 그 인간의 말을 신뢰하지는 않지만, 그 공격의 피해지일 수 있는 IP 장비 소관의 시군 담당자는 그런 깊이 있는 보안 지식이 없을 거라 예상되기 때문에 일단 이관시켜 해당 호스트 장비에서의 그 포트로의 접속 의도만 확인하겠다고 답변했다.
이관시킨 뒤 일일보고서로 남긴 후, 문제는 PL과의 대화에서 터졌다. 지금까지 나는 사용자의 PC에서 HTTP 접속을 하면 해당 사용자의 IP에서 HTTP Port 인 80을 타고 접속을 시도하는 서버나 클라이언트의 Port (랜덤)를 통해 통신이 이루어지는 줄 알았었다. 하지만, 그 반대였다.
백도어 공격이라는 아웃바운딩의 방향과 헛갈렸던 건지 해당 공격 건에 대해 정탐의 가능성이 있으므로 도착지 IP를 차단해놓은 상태였다. 하지만 PL은 도착지 IP는 단지 신라 면세점 쇼핑몰이므로 나가는 방향의 포트 4000을 막던가 해야지 시군에서 단순히 쇼핑을 목적으로 접속한 로그를 탐지한 거라면 IP는 해제해야 한다는 것이었다.
그래, 일단 접수된 건에 대해 선 차단 후 조치한 상태이었므로, 해당 접수 건을 재이관시켜서 시군의 보안담당자가 왜 그 시간대에 해당 도착지 IP로 접속했는지만 확인을 받은 뒤에 해제하면 되었다. 하지만 대화가 오가는 중에 포트에 대한 언급이 문제였다. 항상 출발지에서의 출발지 포트가 해당 서비스(HTTP/80)를 꼽고 나가는 줄로만 알았던 나였는데, PL과 PM 모두 목적지 포트가 해당 서비스의 포트 넘버를 갖는다고 하였다.
다시 펼쳐 보았다. 데이비드 고울리의 'HTTP 완벽 가이드'를 샅샅이 뒤졌다. 그림은 마치 포트가 출발지에서 인터페이스 커넥션이 되는 것처럼 보였다. 일단, 아래 캡처 내용의 (c)와 같이 출발지 서버에서는 목적지의 서비스 포트번호를 ‘추출’해서 접속하려는 목적지의 해당 포트 넘버를 통해 커넥션이 이루어진다(그러니깐 IP 옆에 포트 넘버가 없으면 HTTP port 넘버인 80이 기본으로 추출된다). 나가는 패킷은 출발지 포트 어디를 기점으로 나가든 랜덤으로 선택된다는 내용은 없넹?
이론으로만 생각한 내가 미처 알지 못한 사실이었다. 웹브라우저(웹 클라이언트) 측은 접속하려는 서버의 IP와 Port를 클라이언트가 입력한 URL에서 추출하는 것이다. 그래서 이 탐지 건은 만약 해커가 공격의 대상이 될 수 있는 출발지의 호스트 서버에서 백도어를 시도한 거라면, 웹브라우저(Domain Name, URL)로부터 접속하려는 외부 목적지로의 4000 port를 추출해서 접속했을 것이다.
만약 차단 정책을 세우려고 하더라도 이 4000 port는 시군 공인망의 방화벽 단이나 NAT 공인망으로 나가기 전 인터넷망의 방화벽 단에서의 '목적지 포트'에 대해 블랙리스트에 추가해야 한다. 하지만 단지 목적지 IP를 차단해서는 해당 건의 공격 징후의 백도어 커넥션을 막을 수는 없었다(IP는 랜덤으로 설정되어 들어올 수 있기 때문이다).
PL은 목적지 IP는 어쨌든 신라면세점의 가상 IP이므로 그 IP를 차단해버리면 갑자기 면세점을 이용했었던 시군의 공무원들이 왜 안되지? 하며 멍 때릴 거라는 소리였다.