구글 서제스트를 이용한 은밀한 데이터 전송 기법
초록
본 논문은 구글 서제스트 서비스가 전송하는 자동완성 제안을 은닉 채널로 활용하는 StegSuggest라는 새로운 네트워크 스테가노그래피 방법을 제안한다. 제안은 HTTP 응답에 인기 단어를 추가해 비밀 비트를 전달하고, TCP SYN 패킷의 Window Scale와 Timestamp 옵션을 이용해 전송 시작·종료를 신호한다. 실험 결과, 한 번의 서제스트 리스트당 평균 100비트, 즉 초당 수백 비트 수준의 은닉 대역폭을 확보할 수 있음을 보여준다.
상세 분석
StegSuggest는 기존 웹 서비스인 구글 서제스트(Google Suggest)를 은폐 채널로 전환한다는 점에서 혁신적이다. 구글 서제스트는 사용자가 검색어를 입력할 때마다 AJAX 기반의 비동기 HTTP GET 요청을 서버에 전송하고, 서버는 인기 검색어 목록을 HTTP 200 응답으로 반환한다. 이 과정에서 다수의 GET/OK 패킷이 짧은 시간에 반복적으로 발생하므로, 트래픽 양이 충분히 풍부하고 정상적인 사용자 행동으로 위장될 수 있다. 논문은 LAN 환경에서 5 주일간 캡처한 1 억 개 이상의 패킷을 분석해, 평균 사용자가 1 시간에 약 61 회의 검색을 수행하고, 한 검색당 평균 7 개의 HTTP 요청이 발생함을 확인하였다.
스테가노그래피는 두 가지 레이어에서 이루어진다. 첫 번째는 TCP 레이어의 옵션 필드이다. SYN 패킷에 포함되는 Window Scale(WS)와 Timestamp(TS) 옵션을 이용해 스테가노그래프 전송의 시작·종료를 표시한다. 실험 결과, 전체 SYN 패킷 중 약 60 %가 WS 옵션을, 26 %가 TS 옵션을 포함했으며, TS 옵션이 있는 경우 반드시 WS 옵션도 존재한다는 상관관계를 발견했다. 이를 통해 스텔스 채널을 초기화하고, 양쪽 엔드포인트가 동일한 옵션 조합을 감지하면 은닉 전송을 활성화한다.
두 번째는 애플리케이션 레이어인 HTTP 응답 본문이다. 구글 서제스트가 반환하는 제안 리스트는 일반 사용자에게는 무작위적이고 때때로 기이한 문구가 포함될 수 있다. 논문은 이러한 특성을 이용해, 제안 리스트의 각 행 끝에 ‘스텔가‑제안(steg‑suggestion)’이라는 단어를 삽입한다. 삽입 단어는 5 000개 중 가장 빈도가 높은 4 096개의 영어 단어를 4개의 그룹으로 나누어 구성한 코드북을 기반으로 선택된다. 각 그룹은 1 024개의 단어를 포함하고, 각 단어는 10비트(2¹⁰) 정보를 담는다. 한 행에 4개의 단어를 순차적으로 배치함으로써 40비트를 전송하지만, 실제 구현에서는 중복 사용을 방지하기 위해 10비트를 4개의 단어(각 그룹 하나씩)로 매핑해 40비트가 아닌 10비트를 전달한다. 결과적으로 한 번의 서제스트 응답(보통 10~12개의 행)당 약 100비트의 비밀 데이터를 삽입할 수 있다.
전송 시나리오는 크게 두 가지로 구분된다. (a) 중간 네트워크 노드가 송신자와 수신자 역할을 수행하는 경우로, 구글 서버와 클라이언트 사이의 전체 트래픽을 가로채어 은닉 데이터를 교환한다. (b) 수신자가 실제 구글 서제스트 클라이언트인 경우로, 사용자는 전혀 인지하지 못한다. 두 시나리오 모두 정상적인 HTTP/HTTPS 트래픽에 섞여 있기 때문에 기존 IDS/IPS가 탐지하기 어렵다.
보안 측면에서 논문은 스텔스 채널의 탐지 가능성을 최소화하기 위해 코드북을 사전에 공유하고, 삽입 단어의 빈도와 위치를 무작위화한다. 또한, WS·TS 옵션을 이용한 신호는 일반적인 TCP 연결에서도 흔히 나타나므로, 옵션 자체만으로는 비정상성을 판단하기 어렵다. 그러나 장기적인 트래픽 패턴 분석이나, 특정 단어가 비정상적으로 높은 빈도로 나타나는 경우에는 통계적 탐지가 가능할 수 있다.
전반적으로 StegSuggest는 기존 웹 서비스와 TCP 옵션을 결합해 높은 은닉 대역폭과 낮은 탐지 위험을 동시에 달성한 사례이며, 향후 유사한 AJAX 기반 서비스(예: 자동완성, 실시간 추천)에도 적용 가능성을 시사한다.
댓글 및 학술 토론
Loading comments...
의견 남기기