최근의 보안사고들.. 그중에서도 대형사고는 APT 공격이라는 신종 공격기법으로 발생하는 경우가 대부분이다. APT 공격은 Advanced Persistent Threat라는 해석도 까다로운 용어로 정의된다. 궂이 번역을 하자면 어떤 사람은 “능동 지속형 위협(공격)” 이라고 하기도 하고 어떤 사람은 “지능형 지속 위협(공격)” 이라고 하기도 한다.
여기서 중요한 것은 persistent 라는 단어다. 바로 “지속”이라는 의미다.
이 의미가 중요한 것은 APT 공격은 단시간내에 공격 목표에 침투하는 것이 아니라 오랜 시간을 두고 끈질기게 공격 목표까지 침투할 수 있는 경로를 찾는다는 의미이기 때문이다. 그 시간은 짧게는 하루가 될 수도 있고 길게는 수개월이 소요될 수도 있는..해커의 입장에서 보면 오랜시간 동안 많은 노력을 요구하는 무척 지루하고도 힘든 과정이다.
하지만 시간이 오래걸린다는 의미는 방어자의 입장에서 볼 때 그만큼 해커가 침투 경로를 탐색하기 위해 내부의 컴퓨터시스템에서 활동하는 시간이 길어지기 때문에 적절한 방어시스템의 구축과 구축한 방어시스템의 활용도를 높이고 직원의 보안의식을 높이면 의외로 쉽게 탐지하여 공격을 차단할 수 있다는 의미가 되기도 한다.
APT 공격의 단계
APT 공격은 다음과 같이 크게 4가지의 단계와 단계별 해커의 공격으로 구분된다. APT공격의 단계
여러 보안 이론에서 설명하듯 보안 시스템은 관리적, 기술적으로 수평적이 아닌 계층적 구조로 구축되어야 하며 각 계층은 APT 공격의 단계별 공격을 적절하게 차단할 수 있도록 구축되어야 한다. 또한 구축된 보안 시스템은 APT 공격 뿐만 아니라 TCP/IP 취약성 공격, 애플리케이션 프로토콜 취약성 공격, 웹 취약성 공격, 서버의 취약성 공격(내/외부), 내부자에 의한 정보유출, 기술적인 실수 등에도 유연하게 대응할 수 있도록 구축되어야 한다.
침투 단계의 공격
APT 공격을 감행하는 해커의 입장과 그 해커의 침투를 차단하기 위한 방어자의 입장 모두에서 침투 단계의 공격과 방어가 가장 어렵다. 대부분 물리적으로 격리되어 있는 공격 목표에 침투하기 위해서 해커는 다음과 같은 기법들을 사용하는 것으로 알려져 있다.
→ 내부 사용자의 이메일 주소를 수집/내부자 간의 이메일로 위장하여 이메일을 보내고 첨부파일(악성코드)을 실행토록 함.
→ 타 웹사이트를 해킹하여 악성코드를 심어 둔 뒤 그 악성코드가 공격 대상 시스템을 사용하는 내부자PC에 감염되도록 함.
→ 공격 대상 기관 입구 및 인근에 USB, SD카드 등 저장매체를 흘려둔 뒤 내부자가 습득하여 반입되어 내부 PC에 접속되면 자동실행 되도록 함.
→ 기타 사회공학적 기법을 이용해 내부 사용자의 PC 혹은 서버가 악성코드에 감염되도록 함.
위의 침투기법들은 많이 알려진 기법들일 뿐 전부는 아니다. 또한 침투 기법은 “내부망에 탐색 및 침투 거점 마련”이라는 단순하고 명확한 목표를 실현하기 위해 활용 가능한 모든 사회공학적, 기술적 방법을 동원하기 때문에 예측 및 탐지/차단이 어려운 것이 현실이고 보안 업계에서도 완벽한 차단은 불가능하다고 입을 모으고 있다.
탐색 단계의 공격
일단 침투 단계의 공격이 성공하여 내부의 PC 혹은 서버에 악성 코드가 감염되면 악성코드는 그 역할에 따라 다양한 작업을 수행한다. 해커의 입장에서 가장 중요한 작업은 감염시킨 악성코드를 자신의 의도대로 실시간 조종이 가능하도록 하는 것이다. 악성코드가 미리 정해진 IP로 아웃바운드(outbound) 통신 연결이 가능하다면 해커는 이후 감염시킨 악성코드를 통해 다양한 공격도구를 해당 컴퓨터에 전송, 설치하여 탐색 단계로 진입할 수 있다.
탐색 단계에서는 다음과 해킹 기법이 사용된다.
→ 키보드 로깅 (Keyboard logging) 및 화면 갈무리(screen capture)
→ 포트스캔 (port scan)
→ 원격제어(Remote Control)
해커는 위의 기법들을 이용해 끈질기게 자신이 공격목표로 삼은 서버에 해당 컴퓨터의 사용자가 접속하기를 기다리거나 어떤 프로그램을 이용해 어떤 방법으로 서버나 DB 혹은 관리 프로그램을 접속하는지 모니터링(탐색) 하게 된다.
유출 단계의 공격
사실 탐색과 유출단계는 동시에 이루어진다고 봐야한다. 악성코드에 감염되어 해커에게 조종당하는 해당 컴퓨터에 중요한 자료가 있다면 100% 해커에게 유출된다고 봐야하며 해당 컴퓨터를 사용하는 사용자의 개인정보 또한 해커에게서 자유롭지 못하다.
유출단계에서는 탐색단계의 기법이 그대로 사용되며 탐색 과정에서 주요 서버의 IP, 관리자 계정, 패스워드, 접속 방법 등이 로그파일 혹은 이미지로 저장되어 해커의 손에 넘어가게 된다.(유출) 이 과정에서 해커가 목표로 하지는 않았지만 해커의 흥미를 끌만한 정보가 해커에게 넘어갈 경우 공격 목표는 얼마든지 추가되거나 변경될 수 있다.
또한 수집된 정보를 분석하여 보다 금전적인 이익을 얻을 수 있는 방법이나 중요한 정보가 저장된 서버를 파악하게 되고 해당 서버에 대한 접근 권한을 얻기 위해 더욱 신중하게 정보를 추가적으로 탐색하고 분석하게 된다.
수집/공격 단계의 공격
해커가 공격 목표로 삼은 서버에 접속할 수 있는 권한을 탐색과 유출단계를 통해 얻게 되면 사실상 해커의 승리(?)라고 봐야한다. 이 단계가 되면 이미 서버의 관리자 권한이 해커에게 넘어간 것과 다름이 없기 때문에 이 단계에서 해킹 탐지는 일반적인 보안 솔루션으로는 불가능하다. 이때부터는 해커가 접속에 성공한 서버 내에서의 행위를 통제하여야 하는데 사실상 통제 불능 상태라고 봐야한다. 만약 RedCastle SecureOS와 같은 서버 내부의 행위 통제 방안이 마련되어 있다면 통제가 가능하긴 하다.
이 유출단계에서 사용되는 방법들은 해킹 기법이라고 볼 수 없다. 왜냐하면 해커는 이 단계에서부터는 일반적인 서버 관리자나 DB관리자, 네트워크 관리자들이 서버 및 DB 그리고 네트워크를 운영하면서 사용되는 일반적인 명령어나 프로그램들을 사용하는 경우가 대부분이기 때문이다.
Unix/Linux 서버에서 사용되는 명령어 (관리자들이 사용하는 명령어와 동일함)
→ telnet, ssh, ftp, rm, mv, tar, perl, cd, ls, su, vi, df, ifconfig, chmod, chown, useradd, paswd, compress, gzip, sqlplus, export 등등등
Windows 서버에서 사용되는 명령어
→ dir, cd, net, ipconfig, regedit, isql(osql),cp, ftp, mstsc 등등등
왜냐하면 서버 내에서 실행되는 명령어나 파일에 대한 접근은 기술적인 방법으로는 합법적인 행위냐 불법적인 행위냐를 구별하는 것이 불가능하기 때문이다. 해커가 서버에 접속하여 DB 접근 명령어를 실행하거나 중요한 DB 파일을 통째로 분할 압축하여 외부로 유출한다거나 DB 백업 명령어를 통해 데이터베이스의 회원정보 테이블을 Export 한 뒤 Export 된 파일을 반출하는 행위(수집)에 대하여 기술적으로 불법 여부를 판단할 수 없기 때문이다.
또한 모든 정보를 빼내간 뒤 농협사태 처럼 해당 서버의 디스크를 로우레벨에서 삭제하여 흔적을 지우고 서비스의 심각한 장애를 유발(공격)한 뒤 유유히 빠져나가도 서버에 장애가 발생하기 전까지는 서버에 대한 해킹을 탐지하는 것이 거의 불가능하다.
많은 보안업체들이 APT 공격에 대해 이야기하고 방어책을 이야기하지만 아직은 APT 공격에 대해 특정 보안솔루션 하나로 대응할 수 있는 방법은 존재하지 않는다.
정리
APT 공격을 방어하기 위해서는 현재의 정보시스템 운용/개발 조직과 네트워크 및 서버 시스템의 현황분석 그리고 존재하는 취약점의 파악과 분석을 통해 계층적 보안 시스템을 구축하고 각 보안 계층에서 취합할 수 있는 실시간 이벤트와 로그를 분석하여 연관성을 파악하고 리포팅한 뒤 경험이 풍부한 보안관리자가 판단하는 것이 현재로서는 가장 바람직한 방향이라고 생각된다.
시간이 되면 조만간 APT 공격의 각 단계별 방어 및 탐지가 가능한 보안솔루션을 정리해보도록 하겠다.