brunch

브런치북 APT 개론 05화

You can make anything
by writing

C.S.Lewis

by 흐르는 강물처럼 Feb 15. 2021

APT-5 (악성코드와 취약점)

취약점을 이용하는 악성코드란 무엇인가요?

다음으로 다양한 APT 공격을 하기 위한 도구로 이용되는 멀웨어(Malware)에 대해서 알아보도록 하겠습니다. 악성코드(Malicious Code)라고도 불리며, 정상적인 기능을 위해 만들어진 것이 아니라, 사용자에게 해악을 끼치는 악의적인 목적으로 만들어진 모든 코드의 총칭을 말합니다.



구현 방법으로 컴퓨터 바이러스, 트로이목마, 웜 등이 존재합니다. 요즘은 악성코드 유포 사유가 점점 더 금품을 요구하는 목적으로 변하였으며, 렌셈웨어처럼 사용자의 데이터를 인질로 하여 협박, 갈취를 하는 방식으로 발전하여 굉장히 활성화되어 있는 공격 방식으로 발전하였습니다.



기능에 따라 분류해보면 사용자의 동의 없이 개인정보를 빼가는 '스파이웨어', 시스템에 대한 정상적인 절차를 거치지 않고 시스템에 접근이 가능하게 하는 '백도어', 컴퓨터의 관리자 레벨의 권한으로 접근이 가능하게 해주는 '루트킷' 사용자의 키보드 입력정보를 텍스트 파일로 저장하는 '키로그' 컴퓨터 내의 데이터에 접근할 수 없게 암호화하여, 데이터를 인질로 금품을 요구하는 렌섬웨어(Ransom(인질)+Ware), 사용자의 동의 없이 광고를 강제로 보여주는 '애드웨어'등이 모두 멀웨어 범주에 속합니다.



여기서 APT 공격에 활용되는 것은 스파이웨어, 백도어, 루트킷, 키로그 등이 공격에 활용되고 있는데 최초 이러한 악성코드를 컴퓨터에 감염시키기 위해서는 악성코드가 공격 대상 조직의 컴퓨터에서 실행되게 만들기 위해 웹브라우저를 통한 '워터링홀' 공격 방식이나 사용자에게 이메일을 보내 공격하는 '스피어 피싱'공격을 이용한다고 이전 글에서 설명하였습니다.



이런 악성코드가 컴퓨터에서 실행된다고 모든 컴퓨터가 감염되는 것은 아니고, 해당 컴퓨터의 OS 혹은 프로그램의 취약점이 있고, 그 취약점을 악용할 경우에만 악성코드에 감염됩니다. 여기서 취약점이란 쉽게 말해 버그(bug)인데 이 버그를 악용하면 특정한 명령을 임의로 실행하게 만들거나, 임의로 파일을 생성하거나 파일을 업로드한 후 실행시켜 최종적으로 시스템의 관리자 권한을 획득하게 만들 수 있는 말 그래도 취약점을 말합니다.



통상 보안 취약점은 CVE(Common Vulnerabilities and Exposures)로 불립니다. 아래 <그림 1>는 국내에서 개발되어 사용 중인 소프트웨어에서 발견되어 신고된 취약점 리스트를 캡처한 내용입니다. 여기서 각 취약점의 ID는 발견된 년도와 일련번호를 표시한 것이다. CVE-2020-7814이란 2020년도에 발견된 7814번째 취약점이란 뜻입니다.


이러한 취약점은 컴퓨터뿐만 아니라 휴대폰, 네트워크 장비, 보안장비, 서버, 집에서 사용하는 공유기, 가전제품 등 소프트웨어를 사용하는 모든 시스템에서 발견되는 것으로, 이런 취약점을 보완하지 않으면 언제든지 공격자를 통해 해당 시스템이 공격당 할 위험이 지속될 수밖에 없습니다.



< 그림 1 >  국내에서 개발된 소프트웨어의 보안 취약점 리스트 (출처: 한국인터넷진흥원)



이러한 취약점은 사용자가 우연히 발견할 수도 있고, 제품을 개발한 제조사, 전문 테스트 기관에서 발견하여 개발사에 신고를 통해 알려지기도 합니다. 신고를 접수한 개발사는 최대한 빠른 시간에 해당 취약점을 제거한 수정 버전을 내놓아 사용자들이 취약점을 제거할 수 있도록 지원하고 있습니다.



우리가 컴퓨터를 사용할 때 Windows OS 사용하다 보면 윈도 업데이트가 된다는 메시지를 자주 접하게 됩니다. 마이크로소프트사에서 개발한 윈도 OS에 있는 보안 취약점을 자체적으로나 혹은 외부에서 확인되어 취약점을 제거할 수 있는 수정 파일을 다운로드하여 컴퓨터에 적용시키는 과정이라고 할 수 있습니다. 



이러한 취약점을 발견한 개인이나 단체가 이 취약점을 개발사에 알리지 않고 공격에 악용할 수 도 있는데 이런 알려지지 않은 취약점을 이용하는 공격을 제로데이(Zero-Day) 공격이라고 불립니다. 즉 아직까지 취약점이 알려지지 않았거나, 아직 취약점을 제거할 수 있는 패치가 나오지 않은 상태로 제로데이라는 뜻은 해당 취약점이 알려지거나 발견된 날을 뜻하며, 개발사가 취약점을 제거할 수 있는 수정본을 개발하기에는 얼마간의 시간이 필요한데, 아직 패치가 나오기 전의 상태를 말합니다.



즉 해당 취약점에 대한 대책이 아직까지 없기 때문에 해당 취약점을 이용한 공격을 막을 수 없어서 어떤 컴퓨터라도 해당 취약점을 가지고 있는 소프트웨어를 쓰고 있다면 공격에 무방비로 노출될 수밖에 없는 상태에 놓여 있는 것을 뜻합니다.



이런 특징으로 인해 제로데이 취약점은 공격자들에겐 만능 무기를 소유하고 있는 것으로 간주되며, 모든 공격자가 취약점을 찾는데 혈안이 되어 있습니다. 설령 취약점을 찾는다고 해도 함부로 사용하지 않고, 결정적인 타깃이나 중요한 동기가 생겼을 때 사용하기 위해 아껴 두게 됩니다. 본인이 이용할 동기가 없다고 하면 이런 취약점을 공격자끼리 혹은 소프트웨어 개발사와 거래하는 경우도 있습니다.



아래 <그림 2>은 이렇게 발견한 취약점의 종류에 따라 가격을 책정한 리스트입니다. 발견된 취약점을 적용할 수 있는 OS가 얼마나 많이 사용되는지, 얼마나 쉽게 적용할 수 있는지, 얼마나 광범위하게 영향을 미칠 수 있는지에 따라 가격을 책정해서 거래가 이루어지는 금액이 표시된 것을 볼 수 있습니다.



그림에서 오른쪽 제일 상단 박스의 경우 윈도 OS를 사용하기만 하면 적용할 수 있고 사용자가 별다른 동작(클릭)이 없더라도 자동으로 원격에서 공격자가 원하는 악성코드를 실행해서 컴퓨터를 장악할 수 있는 취약점이 발견된다면 최대 백만 달러까지 가격이 책정되어 있는 것을 확인할 수 있습니다.



< 그림 2 >  발견된 취약점의 종류에 따라 책정된 가격정보 (출처: Zerodium)


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari