APT 공격이 이루어지는 각 단계의 자세한 내용이 궁금합니다.
그럼 각 단계별로 어떻게 공격이 이루어지는지 알아보도록 하겠습니다. 먼저 초기 침해 단계는 공격 대상이 선정되면 해당 조직의 외부로 공개된 전산자원과 구성원들의 연락처를 수집하는 것으로 시작됩니다.
운영 중인 홈페이지 서버의 취약점을 스캔해서 침투 가능성을 확인하거나, 재택근무나 출장자를 위한 VPN 접속 서비스의 취약점 혹은 계정 정보, 또는 구성원들의 이메일을 수집하여 악성코드가 숨겨진 파일을 이메일에 첨부하여 열어보게 유도하는 방법을 사용합니다. 이 단계에서 가장 많이 사용되고 있는 공격 기법으로 워터링홀(Watering hole)과 스피어 피싱(Spear fishing)이 있습니다.
먼저 워터링홀은 아래 <그림 1>의 왼쪽 그림과 같이 초원의 물웅덩이에 사자가 숨어 있다가 물을 먹기 위해 접근하는 동물들을 공격하는 방식에서 유래된 것으로, 타깃으로 지정한 조직의 구성원들이 많이 방문하는 웹사이트를 해킹해서 악성코드를 숨겨 두었다가, 해당 웹에 접속하게 되면 악성코드에 감염되게 만드는 방식으로 내부에 침투하는 기법을 의미합니다.
두 번째로는 작살로 고기를 잡는 것처럼 <그림 1>의 오른쪽 그림과 같이 무차별적으로 이메일을 보내 감염시키는 것이 아니라, 공격 대상 조직의 구성원 이메일을 입수하여 공격 대상을 선별해서 수신자가 첨부파일을 열거나 메일 내의 URL을 클릭하게 유도하여 해당 PC를 감염시키는 방식인 스피어 피싱이 사용됩니다.
그럼 스피어 피싱에 사용되는 메일의 유형을 알아보죠. 아래 <그림 2>와 같이 용량 초과나 계정 차단 등의 경고 관련 메일을 보내서 수신자의 흥미를 유도한 다음 의심 없이 첨부파일을 클릭하거나 본문에 있는 URL을 클릭하도록 유도하는 내용으로 구성되어 있습니다. 이때 첨부파일의 문서를 열거나 URL을 클릭하게 되면 해당 단말로 악성코드가 다운로드되어 감염되는 것입니다.
이러한 스피어 피싱을 통한 악성코드 감염사고뿐만 아니라 랜섬웨어에 감염되어 단말에 저장된 모든 데이터가 암호화되어 공격자의 협박을 받는 사례가 빈번하게 발생되고 있습니다. 이에 정부기관인 한국인터넷진흥원(KISA)에서는 스피어 피싱에 대한 경각심을 높이고, 침해사고를 방지하기 위해 다양한 홍보활동을 하고 있습니다.
아래 <그림 3>와 <그림 4>은 이러한 홍보활동의 일환으로 전 국민이 알기 쉽게 만화 형식으로 만든 보안교육 자료이니 참고하기 바랍니다. 이러한 스피어 피싱 공격에 대응하기 위해서는 악성코드가 포함된 메일을 탐지하고 차단하는 시스템을 도입해야 하고, 단말에 설치된 바이러스 백신이 언제나 최신 상태가 유지되게 관리하여야 합니다.
무엇보다 외부와의 직접적 접촉이 많아 메일이 홈페이지에 노출되어 있는 영업, 고객관리 등의 팀원에 대한 정기적인 보안교육을 통해 출처가 의심되는 메일은 열어보지 말고 삭제할 수 있도록 하는 것이 최선의 대처 방법입니다.
두 번째는 거점 확보 단계로 감염시킨 단말의 호스트 이름, 네트워크 정보, OS 버전 등의 단말 정보를 수집하고, 기능이 보강된 악성코드를 추가로 설치하여 다양한 데이터를 수집하여 원활하게 공격자의 저장장치로 전송하기 위한 디스크 연결 설정을 하기도 합니다.
세 번째 권한 확대단계는 감염 단말의 계정권한이 관리자 권한이 아닐 경우 권한 상승을 위해 해당 OS의 권한상승 취약점을 유발하는 추가적인 악성코드를 설치하여 권한을 관리자 권한으로 상승시킵니다. 또한 단말 내의 사용자 계정 패스워드를 알아내거나 추가적인 계정을 생성하여 향후 정상적인 접속에 활용합니다.
네 번째 내부 정찰 단계는 단말이 속한 네트워크 구조를 파악하고 같은 네트워크 내에 있는 다양한 단말 혹은 서버를 탐색하기 시작합니다. 이를 통해 단말의 취약점을 통해 추가로 감염시키거나 로그인 정보를 탈취하여 단말에 연결된 공유폴더 및 단말 내의 이메일, 문서 등 다양한 데이터를 열람하여 향후 공격 방향을 결정하는 데 사용합니다.
다섯 번째 내부 이동 단계는 내부 정찰을 통해 확보된 네트워크 구성 및 서버, 단말정보를 이용하여 서버 및 단말의 관리자 권한을 획득하여 목표 조직의 전산자원에 광범위하게 접근권한을 획득하여 내부 기밀문서, 계정 정보 등을 수집합니다. 이때 백신 및 보안장비의 탐지를 회피하기 위해 해킹 목적으로 개발한 툴이 아닌 정상적인 프로그램을 사용하기도 합니다. 해당 조직이 만약에 망분리가 되어 있어 업무망 혹은 운영망에 접근이 불가능한 경우 망간 접점이 되는 시스템(망연계 설루션, 보안 USB 등)을 찾아서 해당 시스템의 취약점을 조사하여 침입을 시도하게 됩니다.
여섯 번째 연결유지단계는 감염 단말이 재부팅되거나 예상하지 못한 프로세스 충돌 등으로 악성코드가 종료되어 침입 경로를 잃을 수 있습니다. 이를 방지하기 위해서 악성코드가 재부팅 후에도 다시 실행될 수 있도록 서비스를 등록하고 시작 프로그램을 설정, 작업 스케줄러 등록, 웹쉘 삽입 등을 수행합니다. 웹쉘(Web shell)이란 웹을 통해 브라우저에서 운영체제의 커널(핵심 프로그램:시스템의 모든 것을 통제)과 연결하여 다양한 명령을 내릴 수 있도록 동작하는 스크립트의 일종입니다. 이를 통해 일종의 개구멍(백도어:Back door)을 만들어 두는 것으로 공격자가 원할 때 언제나 은밀하게 접근할 수 있게 합니다.
위에서 설명한 3~6번째 단계는 계속 반복되면서 조직 내의 전산 자원을 조금씩 확보해 나가게 된다. 이 기간이 며칠 단위가 될 수도 있고 탐지가 되지 않는다면 몇 년 단위도 될 수 도 있습니다. 이렇게 오랜 기간 동안 지속적으로 침입한 조직에 잠복하는 특성 때문에 "지속 공격"이라는 명칭이 붙게 되었습니다.
마지막 일곱 번째 임무 완수 단계는 조직 내의 다양한 정보를 수집하여 외부로 전송시키는 단계입니다. 이때 보안장비에서 탐지되는 것을 회피하기 위해 수집한 정보를 암호화시키거나 데이터를 한 번에 전송하지 않고 100KB으로 적은 양으로 쪼개서 보내는 방법을 사용합니다. 만약에 침투한 조직의 전산자원이 더 이상 활용할 필요가 없어지게 되면 마지막 단계로 특정한 D-Day를 지정하여 내부 전산자원을 파괴시키는 등의 행위를 하는 경우도 있습니다.
위에서 설명한 APT 공격의 각 단계를 아래 <그림 5>에 정리하였습니다. 최초 직원 1이 악성코드에 감염되어 있는 웹사이트를 방문하여 악성코드에 감염이 됩니다. 감염된 "직원 1 PC"를 통해 인터넷 PC 관리 설루션 서버에 웹쉘이 업로드하여 이를 통해 인터넷망에 있는 모든 PC가 모두 악성코드에 감염됩니다. 인터넷망의 PC가 장악되고 정찰을 통해 내부망에 접근할 수 있는 통로인 망연 계장 비를 발견 후 취약점을 확인하여 침투하게 되고 내부망의 중앙관리 설루션을 장악하여 내부망의 PC까지 모두 악성코드에 감염시켜서 조직의 전산자원을 완전히 장악하는 단계로 완성됩니다.