2024년 게임에 대한 내용은 악성 코드(게임) 문서 참고하십시오.
1. 개요
악성코드(Malicious Code 혹은 Malware, 악성 소프트웨어)는 사용자에게 해악을 끼치는 악의적인 목적으로 만들어진 모든 코드(Code)의 총칭이다. 정보통신망법에서는 악성 프로그램이라고 한다.2. 상세
구현 방식으로 컴퓨터 바이러스, 트로이목마, 웜이 존재하며 이와 별개로 실질적인 행동에 따라서 따로 이름을 붙이기도 한다.요즘은 예전과 달리 점점 악성코드 유포가 보안 절차를 회피하기 위해 여러 수단을 동시에 활용하며 악성코드 유포 사유가 점점 더 "돈벌이"라는 현실적(?)인 목표로 변하기 때문에 이전에 사용되던 3대 구현 방식만으로 분류하기는 어려워졌다. 아예 랜섬웨어처럼 매우 독보적인 사례도 등장하였기 때문에 구현 방식에 따른 구분은 요즘은 거의 사장되었으며 보안 전문가들도 용어를 혼용, 심지어 오남용하는 경우가 많다.
악성코드를 진짜 제대로 악성코드라는 원칙적 이름으로 불러주는 나라는 악성코드 등장 초기 부터 정부 정책 수준으로 악성코드라는 이름을 못 박아둔 한국 말고는 없다고 봐도 무방하다.[1] 대부분의 보안전문가들이 일반인과 별반 다를거 없이 악성코드를 여러가지 "엄밀하지 못한" 용어들로 부르는 경우가 많다. 이 때문에 보안 업계에서 약장수급 용어 사용이 일어나 비판받기도 한다.
정부 차원에서 사이버 전쟁을 위해 악성코드를 제작해 상대방 국가의 주요 기관이나 시설을 공격하는 행태도 있다.
3. 종류
PC, 스마트폰을 포함하여 SW를 실행할 수 있는 모든 종류의 컴퓨터가 악성코드의 표적이 될 수 있다. 본 문서에서는 주로 PC용 악성코드에 대해서 서술한다.엄밀히 말하면 악성코드와 바이러스는 다른 것이지만 두 가지 모두의 특징이 있는 것들도 있어 분류하기 쉽지 않다. 예를 들어 웜이 바이러스처럼 실행파일을 감염시키고 내부에 트로이 목마를 포함하고 있다거나 하는 경우가 많다.
여러 가지 경로로 감염이 되고 나면 내부 정보를 몰래 빼돌리던지, 암호화를 시키던지, 채굴을 하던지, 다른 컴퓨터를 조종하던지 다양한 활동을 한다.
이 때문에 같은 악성코드라도 보안업체마다 분류가 다른 경우가 많으며 보안 전문가들도 용어를 혼동하여 사용하는 경우가 잦다.
3.1. 감염 방식
원래 모든 악성코드는 아래 세가지로 감염 방식을 가지고 있다. 과거에는 한가지만 사용했지만 요즘에는 웜과 트로이 목마는 기본으로 사용하고 바이러스는 옵션이다.- 컴퓨터 바이러스: 핵심은 자기복제. 생물학적 바이러스가 다른 세포 속에 들어가 그 세포를 악성세포로 만들 듯이, 컴퓨터 바이러스는 정상적인 프로그램과 코드를 악성코드로 만들며 컴퓨터 소프트웨어 전체에 전파된다.
- 트로이 목마: 핵심은 위장. 신화의 트로이 목마처럼 겉으로 보기엔 악성코드인지 알 수 없어 사용자의 의심을 피해 컴퓨터를 감염시킨다.
- 웜: 핵심은 네트워크 전파. 개별 단말기에서 개별적으로 작동하지 않고, 이 단말들을 묶은 네트워크 전체를 감염시켜 작동한다.
3.2. 피해 유형
3.2.1. 스파이웨어
컴퓨터에 사용자의 동의 없이 설치되어 개인정보 등을 빼가는 악의적 소프트웨어다. 자세한 것은 해당 문서 참조.3.2.2. 백도어
백도어는 말 그대로 뒷문이라는 뜻으로, 사용자 인증 시스템을 무력화시켜 다른 악성코드가 설치되는 뒷문을 만든다. 자세한 것은 해당 문서 참조.3.2.3. 루트킷
단일 컴퓨터 또는 일련의 컴퓨터 네트워크에 대해 관리자 레벨의 접근을 가능하도록 하는 도구(프로그램)의 집합이다. 시스템 침입 후 침입 사실을 숨긴 채 차후의 침입을 위한 백도어, 트로이목마 설치, 원격 접근, 내부 사용 흔적 삭제, 관리자 권한 획득 등 주로 불법적인 해킹에 사용되는 기능들을 제공하는 프로그램의 모음이다. 루트킷이 설치되면 자신이 뚫고 들어온 모든 경로를 바꾸어 놓고, 명령어들을 은폐해 놓기 때문에 해커가 시스템을 원격으로 해킹하고 있어도 루트킷이 설치되어 있는 사실조차 감지하기 어렵다.침입자는 먼저 암호를 크래킹 하거나 시스템 취약점을 찾아내어 사용자용 접근 권한을 획득한 뒤, 컴퓨터에 루트킷을 설치한다. 루트킷은 네트워크상의 다른 컴퓨터에 있는 사용자 ID와 암호들을 탐지하여 해커에게 루트 권한, 시스템 정보 그리고 기타 특수한 접근 권한을 제공한다. 또한 트래픽이나 키스트로크 감시, 해커 이용 목적의 시스템 내 백도어 설치, 로그파일 수정, 네트워크상의 다른 컴퓨터 공격, 탐지 회피를 위한 기존 시스템 도구의 수정 등의 기능을 제공한다.
3.2.4. 키로깅
사용자가 키보드로 입력하는 것을 모두 해커에게 전송하는 악성코드. 흔히 해킹툴 같은 것에서 볼 수 있다. IDT 후킹을 이용한다. 하드웨어 키로거도 있다.(사진)3.2.5. 크립토마이너
사용자 몰래 컴퓨터에 설치되어 암호화폐를 채굴하는 악성 프로그램.암호화폐 채굴은 컴퓨터의 자원을 많이 사용하기 때문에 컴퓨터가 느려지거나, 전력 소비가 늘어나거나, 그래픽카드의 수명을 저하시킬 수 있다.
채굴을 한 적이 없는데, 알 수 없는 프로세스가 CPU 사용량을 과다하게 사용하고 있는 경우에는 비트코인 마이너로 의심하고 av로 검사해보도록 하자. 대부분의 av는 비트코인 마이너를 탐지한다.
일부 웹 사이트의 스크립트에 크립토마이너가 설치되어, 웹 접속자 몰래 채굴을 하는 행위가 발견되기도 한다. 이는 광고 차단 플러그인을 통해 차단할 수 있다.
3.2.6. 랜섬웨어
자세한 내용은 랜섬웨어 문서 참고하십시오.이름의 어원은 Ransom(인질) + Ware. 이름 그대로 감염자 컴퓨터의 데이터에 접근할 수 없게 암호화[2]를 걸고, 데이터를 인질로 삼아 잠금을 해제하는 키를 대가로 금품을 요구하는 악성코드의 통칭이다.[3] 악성코드 가운데서도 가장 질이 나쁘고 악랄한 종류로 현재로서는 예방을 해도 확신할 수 없는, 최악의 악성코드. 지금으로서의 최선의 예방책은 신뢰하지 못할 메일을 열지 말고, 신뢰하지 못할 사이트에 들어가지 않으며, 수상한 파일은 실행시키기 전에 백신 프로그램의 샌드박스 검사를 돌려보는 것이다.[4]
3.2.7. 애드웨어
광고를 보여주는 프로그램을 통칭한다. 사용자 동의 없이 몰래 설치되는 악성코드일 수도 있지만, 눈속임을 통해 은근슬쩍 사용자의 동의를 받고 설치되는 PUP 형태도 많다. 자세한 것은 해당 문서 참조.3.3. 기타
- 가짜 악성코드 괴담: 실존하지 않는 악성코드가 존재한다고 사람을 속이는 행위. 컴퓨터의 영역은 아니다.
- 과금형 악성코드: ARS 또는 유료 SMS(건당 x원) 서비스에 전화를 걸어 돈이 빠져나가게 되는 경우. (안랩의 글)
- 애드테크를 활용한 맞춤형 광고: 앱 추적으로 찾은 노인(+어린이, 주부 등) 스마트폰에 사이렌을 울리며 악성코드가 감염되었다는 등의 동영상을 재생하면, 놀란 노인들이 얼떨결에(예/예/예/예) 애드웨어/허위 백신 프로그램을 설치하게 된다. 플로팅 광고를 띄워주면 더 효과적이다.
- 잉여수용소
- 조크 바이러스: 컴퓨터가 아니라 사용자의 멘탈을 공격하는 악성코드. 자세한 사항은 해당 문서 참조.
- 허위 백신 프로그램: 금전적 이득을 얻으려는 목적으로 백신 프로그램을 사칭하는 불법 행위. 자세한 것은 해당 문서 참조.
- 해킹툴: 해킹에 악용되는 프로그램. 비전문가도 해킹을 할 수 있도록 도와주는 프로그램이다. 물론 진짜 해커들은 해킹툴을 사용하지 않고, 대부분이 실력은 없는데 해킹을 하고 싶은 스크립트 키디들이다. 자세한 것은 해당 문서 참조.[5]
- istartsurf
- cl ncclick: 인터넷 익스플로러에서 뭔가 검색만 하면 관련 키워드로 온갖 쇼핑몰 사이트로 안내하는 악성코드.
4. 악성코드 분석 관련 정보 제공 사이트
- VirusTotal(미국): https://www.virustotal.com
- VirScan(중국): http://www.virscan.org
- MetaDefender(미국): https://metadefender.opswat.com/
- 멀웨어즈닷컴(한국): https://www.malwares.com
5. 법률 조항
정보통신망 이용촉진 및 정보보호 등에 관한 법률 (법제처 국가법령정보센터 출처) 제48조(정보통신망 침해행위 등의 금지) ① 누구든지 정당한 접근권한 없이 또는 허용된 접근권한을 넘어 정보통신망에 침입하여서는 아니 된다. ② 누구든지 정당한 사유 없이 정보통신시스템, 데이터 또는 프로그램 등을 훼손·멸실·변경·위조하거나 그 운용을 방해할 수 있는 프로그램(이하 "악성프로그램"이라 한다)을 전달 또는 유포하여서는 아니 된다. ③ 누구든지 정보통신망의 안정적 운영을 방해할 목적으로 대량의 신호 또는 데이터를 보내거나 부정한 명령을 처리하도록 하는 등의 방법으로 정보통신망에 장애가 발생하게 하여서는 아니 된다. 제70조의2(벌칙) 제48조제2항을 위반하여 악성프로그램을 전달 또는 유포하는 자는 7년 이하의 징역 또는 7천만원 이하의 벌금에 처한다. |
[1] 일례로 이웃나라 일본은 형법에서 '부정지령전자적기록(不正指令電磁的記録)'이라는 표현을 쓰고 있다. 잘못된 명령을 내리는 전자적 기록이라는 뜻.[2] 일명 encrypted.[3] 초창기에는 '돈 받고 안 풀어주면 결국 돈 보내는 사람이 없어지므로 풀어준다'는 방식으로 장사를 했으나 시간이 지나며 결국 안 풀어주는 사례가 점점 증가해 결국 풀어주는 사례가 극소수로 남았으므로 절대 돈을 보내지 말 것.[4] 그 외에도 중요하거나 소중한 데이터는 필수적으로 클라우드 드라이브, 외장 저장매체 등에 이중 삼중으로 백업하고, 랜섬웨어 대비용 저장매체는 백업이 끝나면 반드시 컴퓨터와 분리시켜 보관해야 한다.[5] 엄밀히 말해 해킹툴 자체는 이용하는 해커에게는 해를 끼치지 않지만, 해킹툴 자체가 해킹의 수단이 될 뿐 아니라 해킹을 위한 악성코드를 생성하므로 해킹툴도 악성코드의 일종으로 볼 수 있다.