워낙에 말들이 많아서 다시 정리를 해 봅니다. Attacker가 Victim 컴퓨터에 Backdoor를 심는 방법에 대한 부분은 밑에서도 거론을 했으니 여기에서는 생략을 하고 정말로 "도청"에 대한 문제 그 자체만을 가지고 얘기를 해 보겠습니다.




1. Victim 컴퓨터에 해당 Backdoor가 설치가 되면 그때부터 계속해서 음성이 녹음이 되어서 해커에게 전달이 됩니다.

여기에서 쓸데 없는 낭비를 초래할 수 있습니다. 대부분 노트북이나 PC 사용자들이 회사에서 항상 기밀 회의만을 하는 것이 아니죠. 자리에 앉아서 조용히 업무를 볼 수도 있겠고, 동료들이랑 같이 잡담을 할 수도 있겠고, 식사나 커피나 담배를 피우러 밖으로 나갈 수도 있겠고, PC나 노트북을 켜 놓고 퇴근할 수도 있겠고... 하지만 해당 Backdoor는 실제로 중요한 기밀을 얘기하든지 그렇지 않든지, 무조건 음성 녹음을 하게 되어 있습니다. 당연히 Resource(File, Network 등)가 낭비를 초래하게 됩니다.


이를 위해서 최소한 VAD(Voice Activity Detection)를 적용시켜야 합니다. 묵음일때에는 처리(저장 및 전송)를 하지 않는 거죠. 하지만 언론 시연 동영상을 보았을 때에는 MCI 관련 API를 작성하였던 것으로 보이고, 즉 이 말은 시도 때도 없이 녹음하여 파일로 저장하고 네트워크로 송신하는 구조입니다. 어느 해커가 바보가 아닌 이상 어느 세월에 아무 얘기 소리도 들리지 않는 그 많은 wav 파일을 다 듣고 있겠습니까?


VAD처리를 위해서는 음성 데이터가 수신되는 중간중간 callback을 받아서 처리를 해야 합니다. wav 파일을 녹음시키기 이전에 현재 음성 데이터가 묵음인지 아닌지를 판별해야 한다는 얘기입니다. 이를 위해서는 MCI 관련 API로는 불가능하고, WAVE 관련 API나 DirectX 기술을 이용해서 음성을 입력받아야 합니다. 또한 샘플링을 할 때에 8bit, 16bit, 32bit 중 어떤 크기의 데이터 구조를 쓰느냐에 따라서 묵음 감지하는 방법이 틀려 질 수 있습니다. Little Endian과 Big Endian 또한 고려해야 할 대상입니다. 하지만 시연 동영상의 코드를 보았을 때에는 이러한 처리가 전혀 되지 않고 있습니다. MCI는 음성 중간중간의 callback 처리를 하지 못하기 때문에 이러한 묵음 감지(VAD)를 원천적으로 하지 못합니다. 소리가 나든 나지 않든 간에 무조건 녹음해서 보냅니다. 어느 해커가 이런 바보짓을 하겠습니까?


참고로 성능이 좋지 않은 마이크의 경우 잡음이 들어 갈 수도 있습니다. 이를 위해서는 노이즈(white noise)를 제거해 주는 것이 좋습니다. FFT 등을 이용해서 특정 주파수 대역의 데이터를 빼 버리는 것입니다. 반면에 Echo Cancel 같은 기능은 필요가 없겠습니다. 쌍방 대화를 하는 프로그램이 아니라 일방적으로 녹음만 하는 프로그램일 테니까요.




2. 웹캠 없이도 녹음을 한다?

녹음 장치는 여러가지 종류가 있습니다. USB 기반 녹음 장치, 사운드 카드에 직접 마이크 장치를 꽂아서 쓰는 장치, PC 혹은 노트북에 기본적으로 장착이 된 장치(언론에서 마이크 내장이라고 얘기하는 것이 바로 이런 장치중의 일부임), 카메라에 딸려서 자동으로 설치가 되는 장치, Virtual Audio Adapter 등등... 수도 없이 많습니다. 그저 몇몇 노트북만 만져 보고 "웹캠 없이도 녹음이 가능하다라는 취약점이 존재다"라는 얘기하는 것을 들으니 웃음만 나오는군요.


여기에서 과연 Stealth Mode로 작동이 되어야 하는 음성 녹음 프로그램이, 내장된 마이크 장치만을 자동으로 판별할 수 있을까요? 거의 불가능하죠. 전 세계에 이러한 H/W와 드라이버를 만드는 벤더가 한둘도 아니고 널리고 널렸는데, 장치의 이름을 가지고 어떻게 판별을 할 수가 있습니까? 무슨 인공지능도 아니고...


프로그램상으로 봤을 때 녹음 장치를 선택할 때 WAVE_MAPPER(-1) 값을 사용한 것입니다. 그렇다면 어떤 장치가 선택이 되었겠습니까? 그건 아무도 모릅니다. 시스템에 따라 다 다를 수가 있기 때문입니다. 정말로 마이크 내장 장치만을 인공지능적으로 선별할 수 있는 기능이 구현되어 있다면 정말로 박수를 쳐 드리겠습니다. 하지만 뭐, 15K 되는 바이너리 모듈에서 이러한 자동 인식 기능이 들어가 있을 리는 만무하겠죠.




3. 회사나 국가에서 진실로 기밀 회의의 도청을 중요한 문제점으로 인식하고 있다면

아주 간단합니다. 회의할 때 노트북뿐만 아니라 관련 기기를 가지고 회의장에 들어 가지 못하게 하면 됩니다. 그리고 현재도 이렇게 하고 있습니다. 민간인이 군부대를 방문할 때, 혹은 외부인이 주요 국가 기관에 들어갈 때에도 휴대폰같은 기기를 들고 부대에 들어가지 못하도록 하고 있죠. 요즘에는 펜과 같이 생긴 녹음기도 많이 있고, 스마트폰도 보급이 되고... 도청에 쓰일 수 있는 기기들은 널려 있습니다. 노트북에 국한시켜 우려하는 것은 너무나 케이스를 한정시켜 버린 것입니다. 더군다나 초허접 공격 기법(악성 프로그램을 메일로 보내기)을 이용했다는 것은 실소를 금할 수 밖에 없구요.


정말로 기밀 회의 내용의 누출이 걱정되는 곳이라고 하면, "정책적으로" 관련된 기기들을 들고 회의장으로 아예 들어 가지 못하도록 하면 되는 것이지, 이번 보도로 인해서 노트북에 도청 방지 버튼을 달겠다는 결론을 내고 있으니 국내 보안 정책이 한심하다는 생각이 들 뿐입니다.




4. 결론

이런 사람들이 보안 업계에 있다는 것에 대해서 우려를 나타내지 않을 수가 없습니다. 그간 대한민국의 보안 업계는 이러한 과장된 주장으로 인해서 기형적인 모습으로 변절되어 가는 모습들을 많이 봐 왔습니다. 정말로 신경을 쓰고 노력을 해야 하는 일이 많음에도 불구하고, 이런 쓸데 없는 곳에 시간와 논쟁을 낭비하는 것은, 국내 보안 관련 산업이 글로벌한 경쟁력을 갖추는데 있어서 정책, 제품, 서비스 모든 차원에서 걸림돌이 될 뿐입니다.


취약점을 거론하고 이슈화해서 사업화를 한다는 것 자체를 폄하하는 것은 아닙니다. 정확하면서도 심각한 취약점을 알아 내고 공표하는 것 자체는 저 또한 긍정적으로 보고 진실로 환영하는 바입니다. 하지만 이번 일은 아니어도 너무 아닙니다. "노트북 도청 이슈화"는 도가 너무 지나칩니다. 이번 건으로 인해서 혹시나 파일 외부 유출을 제어할 수 있는 강제적인 보안 프로그램의 도입을 정부나 관련 기관에 법적으로 제도화하지는 않을까 우려가 듭니다.


제안하는 바입니다. 실행 파일에 스페이스 집어 넣은 다음 zip 파일로 묶어서 상대방에게 메일 보내는 이런 것 말고, 정말로 외부에 알려 지지 않은 zero day 취약점이나, 모든 사람들에게 경각심을 일으킬 수 있는 취약점을 이용해서 Backdoor를 설치하기, 그리고 제가 위에서 열거한, 음성 녹음 도청 기능이 갖추어야 할 최소한의 기본 기능 정도까지만 구현이 되면, 그 정도가 되었을 때 전반적인 진행 상황을 POC 레벨로 문서화를 하여 공개해 주시기 바랍니다. 가능하다면 국내/국제 컨퍼런스에서 발표를 하는 것도 추천드립니다. 그렇지 않고 지금처럼 Audio나 VoIP에 대한 기술이 없는 거의 없는 상태에서, 하루만에 인터넷에서 돌아 다니는 음성 녹음 모듈을 가지고 허접하게 프로그램 하나 만든 다음, "노트북 도청"이라고 과장된 언론 플레이하는 것은 아니라고 봅니다. 보안 업계의 예의를 지켜 주시기 바랍니다.