최근 수정 시각 : 2022-07-07 01:56:32

악성코드

정보통신망 이용촉진 및 정보보호 등에 관한 법률 제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조를 위반하여 타인의 정보를 훼손하거나 타인의 비밀을 침해·도용 또는 누설한 자

1. 설명2. 종류
2.1. 작동 방식에 따른 분류2.2. 특성에 따른 분류2.3. 기타
3. 악성코드 분석 관련 정보 제공 사이트

1. 설명

악성코드 Malicious Code (혹은, Malware, 악성 소프트웨어)는 "정상적"인 기능을 위해 만들어진 것이 아닌, 사용자에게 해악을 끼치는 "악의적" 목적으로 만들어진 모든 코드(Code)의 총칭이다. 정보통신망법에서는 '악성프로그램'이라고 한다.

구현 방식으로 컴퓨터 바이러스, 트로이목마, 웜이 존재하며, 이와 별개로 실질적 행동에 따라서 따로 이름을 붙이기도 한다.

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

사실, 악성코드를 진짜 제대로 악성코드라는 원칙적 이름으로 불러주는 나라는 악성코드 등장 초기 부터 정부 정책 수준으로 악성코드라는 이름을 못 박아둔 한국 말고는 없다고 봐도 무방하다.[1] 대부분의 보안전문가들이 일반인과 별반 다를거 없이 악성코드를 여러가지 "엄밀하지 못한" 용어들로 부르는 경우가 많다. 이 때문에 보안 업계에서 약장수급 용어 사용이 일어나 비판받기도 한다.

정부차원에서 사이버 전쟁을 위해 악성코드를 제작해 상대방 국가의 주요 기관이나 시설을 공격하는 행태도 있다.

2. 종류

악성코드의 종류를 엄밀히 나누는 것은 매우 어렵다. 이유는 대부분의 경우 효과적으로 작동하기 위해 여러가지 기능이 뒤섞여 있기 때문이다. 예를 들어 웜이 바이러스처럼 실행파일을 감염시키고 내부에 트로이 목마를 포함하고 있다거나 하는 경우가 많다. 이 때문에 같은 악성코드라도 보안업체마다 분류가 다른 경우가 많으며, 보안 전문가들도 용어를 혼동하여 사용하는 경우가 잦다.

2.1. 작동 방식에 따른 분류

모든 악성코드는 기본적으로 이 3가지 범주안에 들어간다. 시스템의 각종 보안 절차를 아예 회피하기 위해 운영체제의 보안 허점등을 이용해 조용히 "합법"으로 위장, 혹은 아예 진짜 "합법"적으로 활동하는 "악성"코드들도 일단은 이 3가지 범주를 벗어날 수 없다.

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

각 분류의 가장 중요한 '실용적' 특징은 다음과 같다.
  • 컴퓨터 바이러스: 다른 코드에 자신의 코드를 끼워넣는 '감염' 과정을 통해 스스로를 복제할 수 있다.
  • 트로이 목마: 정상 코드인 것처럼 보이지만 (혹은 아예 이게 뭔지도 모르지만) 사실 원래부터 악성코드.
  • 웜: 네트워크를 통해 구현된다. (다른 코드를 감염시키거나, 정상 코드로 위장하지 않아도 된다.)

요즘은 보안 절차를 회피하기 위해 정상 코드로 위장하는 것이 기본기 수준이 되었기 때문에 웜은 물론, 심지어 전통적 컴퓨터 바이러스 조차도 일단은 트로이목마 방식을 병용하고 있는 경우가 많다. 사실, 이 트로이목마 방식이란 것도 정상코드로 위장하는 방식 자체 보다는, 아예 이게 뭔지도 모르고, 언제 들어온 건지도 모르고, 그냥 그 자리에 몰래 들어와 보안 절차를 죄다 우회하는, 트로이목마 형태가 가진 장점에 집중한 형태로 사용되는 경우가 대부분이다.

2.1.1. 컴퓨터 바이러스

바이러스가 어원이다. 문자 그대로 바이러스처럼 행동하는 악성코드라서 이런 이름이 붙었다. 이 악성코드 작동 방식의 가장 중요한 특징은 생물학적 바이러스와 비슷하게, 다른 코드에 끼어들어가 감염시킬 수 있다는 것.

세계 최초로 발명된 악성코드로 상당히 오랜 기간 동안 악명을 떨쳤던 탓에 악성코드를 통틀어 바이러스라고 하는 경우가 많은데, 엄밀한 의미의 컴퓨터 바이러스는 실제 바이러스와 비슷하게 다른 코드 속에 끼어 들어가 해당 코드가 실행될 때 같이 동작하면서 (= 자가실행 불가) 자기 코드를 복제해 다른 코드에 끼워 넣으며 확산되는 (=자기복제) 방식의 악성코드만을 말한다.

트로이 목마와 다르게 정상 코드에 자기 코드를 끼워 넣는 (=감염) 방식이며, 따라서 처음부터 악성코드를 정상코드로 속여서 전파되는 트로이 목마와는 다르다. 트로이목마는 감염이 아닌 위장을 취하므로 바이러스와 달리 자가복제 기능이 굳이 필요하지 않다.

웜의 경우 네트워크 상에서 존재하며 해당 네트워크에 연결된 모든 기기를 공격할 수 있기 때문에 자가복제 자체가 필요 없다. 물론, 피해를 더 악화시키기 위해 바이러스의 방식, 곧 데이터 파괴를 끼워넣을 수는 있고, 비슷한 개념으로 웜으로 구현된 랜섬웨어가 있다. (워너크라이 등)

백도어나 스파이웨어의 경우 만들기에 따라서 트로이 목마, 웜, 바이러스 3가지 형태 중 아무거나 골라 만들 수 있다. 쉽게 말해 백도어나 스파이웨어를 숙주 컴퓨터에 심기 위해 트로이 목마, 웜, 바이러스 형태로 만들어진다.

컴퓨터 바이러스는 다른 데이터의 코드들 변형 시키는 작동 방식 덕분에 보안 프로그램에게 적발되기 쉽고, 네트워크 전체를 작살낼 수 있는 웜과 달리 전파가 까다로워 요즘은 거의 보기 힘든 악성코드 유형이지만, 한번 감염되면 온갖 코드에 다 끼어들어가 코드를 더럽히고 작동하면서 데이터를 죄다 파괴하는 것이 가능하므로, 일단 피해가 발생할 경우 제일 더러운 유형이다. 이 때문에 데이터를 공격해 자기복제 하는 개념 자체는 도태되었더라도, 데이터를 파괴하는 실질적 효과는 요즘도 대부분의 악성코드에 첨가된다.

컴퓨터 바이러스가 단독 악성코드로 사용되는 경우는 요즘에는 거의 없고, 보통 트로이목마나 웜을 드로퍼로 제작하고, 그 속에 예쁘게 포장해서 선물(...) 하는 형식으로 쓰인다. 그나마도 데이터를 무차별로 감염시키기 보다는 특정 데이터들만 골라 변조시켜 오작동을 일으키고 겸사겸사 자가복제를 해서 다시 웜이나 트로이목마로 재포장되어 이사를 가는 부분적으로만 바이러스인 형식을 띈다. 즉, 일종의 드로퍼인 악성코드가 바이러스 악성코드를 내장하고 있는 방식. 이러한 종류의 악성코드는 악성 행위를 굉장히 선택적으로 가동시킬 수 있기 때문에 기관 단위에서 특정 대상을 골라 공격하기 위해서 공들여 만든 작품(?)들이 많다.

대외적으로 알려진 바이러스의 피해 사례로 인간 트로이목마(...)로 웜을 침투시키고 그렇게 침투한 웜이 네트워크 전체를 떠돌면서 "공격 대상"을 선별하여 바이러스를 투입, 해당 기기들의 특정 시스템 데이터에 감염되여 코드를 변조하고 오작동을 유발하면서 동시에 자가복제되어 다시 바이러스/웜으로써 물리적/네트워크적 경로로 다른 공격 대상 기기로 전파되는 극도로 복잡한 공작을 벌인 스턱스넷이 있다. 코드의 용량이 수백kb나 되었을 만큼 복잡한 악성코드다.[2][3]

엄밀히 따지면 돈이 안 되는 방식이라 도태된 것이다.[4]

2.1.2. 트로이 목마

얼핏 보기엔 정상코드인것 같거나, 혹은 악성코드 여부를 당최 알 수 없지만, 사실 원래부터 "악성코드"를 무료로 첨가(...)해둔, 즉 태생이 원래 악성코드인 것들을 지칭한다.

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

자세한 것은 해당 문서 참조.

2.1.3.

개별 단말들의 데이터에 들어가서 개별적으로 작동하는 것이 아니라, 이 단말들을 묶은 네트워크 상에서 구현되는 악성코드를 이르는 말이다. 네트워크에 연결된 모든 단말들에 영향을 끼칠 수 있으므로 가장 강력한 악성코드 구현 방식이기도 하다. 이러다보니 전통적인 "작동 방식에 따른 분류"를 엄밀히 따르는 것으론 거의 유일하게 살아남은 부류이다.

다만, "네트워크 상"에서 존재하는 만큼 각 단말의 개별 사용자가 아닌, 네트워크 관리자의 감시를 받게 되기 때문에, 다른 구현 방식에 비해 훨씬 치밀한 보안 절차를 뚫어야 하는 단점이 있다. 대신, 일단 성공하면 네트워크에 물린 단말들이 싸그리 작살나므로 피해가 무지막지하다.

요즘은 일반인이 웜을 경험하는 일이 드물고, 대개 조직 단위에서나 친숙하게 만나는 부류이다. 일반인이 직접 체감할 정도의 사안은 대게 "피해가 발생하는 줄도 모르는" 경우가 많고, 각종 보안 업데이트로 쥐도 새도 모르게 틀어막혀 진다. 물론, 요즘도 워너크라이 같이 악랄한 사태가 터지는 경우가 없진 않다.

자세한 것은 해당 문서 참조.

2.2. 특성에 따른 분류

2.2.1. 스파이웨어

컴퓨터에 사용자의 동의 없이 설치되어 개인정보 등을 빼가는 악의적 소프트웨어다. 자세한 것은 해당 문서 참조.

2.2.2. 백도어

백도어는 말 그대로 뒷문이라는 뜻으로, 시스템 접근에 대한 사용자 인증 등 정상적인 절차를 거치지 않고 응용 프로그램 또는 시스템에 접근하여 컴퓨터 속의 정보를 빼내가거나 특정 작업을 하도록 제작된 프로그램이다.

2.2.3. 루트킷

단일 컴퓨터 또는 일련의 컴퓨터 네트워크에 대해 관리자 레벨의 접근을 가능하도록 하는 도구(프로그램)의 집합이다.

시스템 침입 후 침입 사실을 숨긴 채 차후의 침입을 위한 백도어, 트로이목마 설치, 원격 접근, 내부 사용 흔적 삭제, 관리자 권한 획득 등 주로 불법적인 해킹에 사용되는 기능들을 제공하는 프로그램의 모음이다.

루트킷이 설치되면 자신이 뚫고 들어온 모든 경로를 바꾸어 놓고, 명령어들을 은폐해 놓기 때문에 해커가 시스템을 원격으로 해킹하고 있어도 루트킷이 설치되어 있는 사실조차 감지하기 어렵다.

침입자는 먼저 암호를 크래킹 하거나 시스템 취약점을 찾아내어 사용자용 접근 권한을 획득한 뒤, 컴퓨터에 루트킷을 설치한다.

루트킷은 네트워크상의 다른 컴퓨터에 있는 사용자 ID와 암호들을 탐지하여 해커에게 루트 권한, 시스템 정보 그리고 기타 특수한 접근 권한을 제공한다. 또한 트래픽이나 키스트로크 감시, 해커 이용 목적의 시스템 내 백도어 설치, 로그파일 수정, 네트워크상의 다른 컴퓨터 공격, 탐지 회피를 위한 기존 시스템 도구의 수정 등의 기능을 제공한다.

2.2.4. 키로깅

사용자가 키보드로 입력하는 것을 모두 기록한다. 흔히 해킹툴 같은 것에서 볼 수 있다. IDT 후킹을 이용한다. 하드웨어 키로거도 있다.( 사진)

2.2.5. 크립토마이너

사용자 몰래 설치되어 암호화폐를 채굴하는 프로그램.

비트코인 채굴은 CPU 사용량을 많이 사용하기 때문에, 컴퓨터가 느려질 수 있으며, CPU가 아닌 GPU로 채굴을 하기도 해서 그래픽카드의 수명을 갉아먹기도 한다. 따라서 비트코인 채굴을 한 적이 없는데, 알 수 없는 프로세스가 CPU 사용량을 과다하게 사용하고 있는 경우에는 비트코인 마이너로 의심하고 av로 검사해보도록 하자. 대부분의 av는 비트코인 마이너를 탐지한다.

일부 웹 사이트의 스크립트에 크립토마이너가 설치되어, 웹 접속자 몰래 채굴을 하는 행위가 발견되기도 한다. 이는 광고 차단 플러그인을 통해 차단할 수 있다.

2.2.6. 랜섬웨어

파일:상세 내용 아이콘.svg   자세한 내용은 랜섬웨어 문서
번 문단을
부분을
참고하십시오.
이름의 어원은 Ransom(인질) + Ware. 이름 그대로 감염자 컴퓨터의 데이터에 접근할 수 없게 암호화[5]를 걸고, 데이터를 인질로 삼아 잠금을 해제하는 키를 대가로 금품을 요구하는 악성코드의 통칭이다.[6] 악성코드 가운데서도 가장 질이 나쁘고 악랄한 종류로 현재로서는 예방을 해도 확신할 수 없는, 최악의 악성코드. 지금으로서의 최선의 예방책은 신뢰하지 못할 메일을 열지 말고, 신뢰하지 못할 사이트를 들어가지 않는 것이다.

2.2.7. 애드웨어

광고를 보여주는 프로그램을 통칭한다. 사용자 동의 없이 몰래 설치되는 악성코드일 수도 있지만, 눈속임을 통해 은근슬쩍 사용자의 동의를 받고 설치되는 PUP 형태도 많다. 자세한 것은 해당 문서 참조.

합법적(?)으로 활동하는 경우도 많다보니 정보통신망법에서도 악성코드와는 별도로 규정하고 있다. 일단 악성 활동을 하니 엄밀히 따지면 합법(?) 여부와 무관하게 악성코드이긴 하다.

2.3. 기타

  • 가짜 악성코드 괴담: 실존하지 않는 악성코드가 존재한다고 사람을 속이는 행위. 컴퓨터의 영역은 아니다.
  • 과금형 악성코드: ARS 또는 유료 SMS(건당 x원) 서비스에 전화를 걸어 돈이 빠져나가게 되는 경우. (안랩의 글)
  • 조크 바이러스: 컴퓨터가 아니라 사용자의 멘탈을 공격하는 악성코드. 자세한 사항은 해당 문서 참조.
  • 허위 백신 프로그램: 금전적 이득을 얻으려는 목적으로 백신 프로그램을 사칭하는 불법 행위. 자세한 것은 해당 문서 참조.
  • 해킹툴: 해킹에 악용되는 프로그램. 비전문가도 해킹을 할 수 있도록 도와주는 프로그램이다. 물론 진짜 해커들은 해킹툴을 사용하지 않고, 대부분이 실력은 없는데 해킹을 하고 싶은 스크립트 키디들이다. 자세한 것은 해당 문서 참조.[7]
  • istartsurf
  • cl ncclick 인터넷 익스플로러에서 뭔가 검색만 하면 관련 키워드로 온갖 쇼핑몰 사이트로 안내하는 악성코드. 마크 복돌이가 자주 걸린다 카더라

3. 악성코드 분석 관련 정보 제공 사이트



[1] 일례로, 이웃나라 일본의 경우 형법에서 '부정지령전자적기록(不正指令電磁的記録)'이라는 표현을 쓰고 있다. 잘못된 명령을 내리는 전자적 기록이라는 뜻. [2] 스턱스넷은 웜이지만 드로퍼로써 바이러스를 내장하고 있는 웜이라 할 수 있다. 또한 정상코드로 위장해서 침입하는 방식으로 최초 침투했고 이후 확산에도 정상코드로 위장하는 방식이 병용되었으므로 동시에 트로이목마 속에 포장된 웜이기도 하다. 사회공학적 허점을 이용해 인간을 매개체로 침투/확산되는 트로이목마이기도 하므로 소위 APT로 불리는 악성코드 운용 방안의 가장 성공적인 사례이기도 하다. 감염 경로가 에일리언급으로 복잡한데 [3] 민간 기기나 우호국 기기에서 피해를 일으키지 않기 위해 웜임에도 불구하고 바이러스에 가까운 방식으로 전파되게 설계된 것이다. 바이러스 특유의 허술한 기기간 전파력을 역이용해 정밀 타격 기능으로 써먹은 사례. 또한 서로 격리된 네트워크 간에 전파되기 곤란한 웜의 단점을 바이러스와 트로이목마의 장점을 이용해 물리적으로 극복한 사례이기도 하다. [4] 컴퓨터 바이러스의 경우 바이러스 코드 자체를 암시장에 판매하는 수익 모델을 취하나, 랜섬웨어는 감염된 사용자에게서 직접 돈을 갈취하므로 돈도 더 잘 벌리고 코드의 재사용도 용이하다. [5] 일명 encrypted. [6] 이거 당했을 때 절대로 돈을 보내지 말자. 어짜피 다 속임수이다. [7] 엄밀히 말해 해킹툴 자체는 이용하는 해커에게는 해를 끼치지 않지만, 해킹툴 자체가 해킹의 수단이 될 뿐 아니라 해킹을 위한 악성코드를 생성하므로 해킹툴도 악성코드의 일종으로 볼 수 있다.

분류