악성코드
1. 설명
'''악성코드''' Malicious Code (혹은, Malware, 악성 소프트웨어)는 "정상적"인 기능을 위해 만들어진 것이 아닌, 사용자에게 해악을 끼치는 "악의적" 목적으로 만들어진 모든 코드(Code)의 총칭이다. 구현 방식으로 컴퓨터 바이러스, 트로이목마, 웜이 존재하며, 이와 별개로 실질적 행동에 따라서 따로 이름을 붙이기도 한다.
요즘은 예전과 달리 점점 악성코드 유포가 보안 절차를 회피하기 위해 여러 수단을 동시에 활용하며, 악성코드 유포 사유가 점점 더 "돈벌이"라는 현실적(?)인 목표로 변하고 있기 때문에 이전에 사용되던 3대 구현 방식만으로 분류하기는 어려워진 상태이다. 아예 랜섬웨어처럼 매우 독보적인 사례도 등장하였기 때문에, 구현 방식에 따른 구분은 요즘은 거의 사장되었으며, 보안 전문가들도 용어를 혼용, 심지어 오남용하는 경우가 많다.
사실, 악성코드를 진짜 제대로 악성코드라는 원칙적 이름으로 불러주는 나라는 악성코드 등장 초기 부터 정부 정책 수준으로 악성코드라는 이름을 못 박아둔 한국 말고는 없다고 봐도 무방하다. 대부분의 보안전문가들이 일반인과 별반 다를거 없이 악성코드를 여러가지 "엄밀하지 못한" 용어들로 부르는 경우가 많다. 이 때문에 보안 업계에서 약장수급 용어 사용이 일어나 비판받기도 한다.
정부차원에서 사이버 전쟁을 위해 악성코드를 제작해 상대방 국가의 주요 기관이나 시설을 공격하는 행태도 있다.
2. 종류
2.1. 작동 방식에 따른 분류
모든 악성코드는 기본적으로 이 3가지 범주안에 들어간다. 시스템의 각종 보안 절차를 아예 회피하기 위해 운영체제의 보안 허점등을 이용해 조용히 "합법"으로 위장, 혹은 아예 진짜 "합법"적으로 활동하는 "악성"코드들도 일단은 이 3가지 범주를 벗어날 수 없다.
하지만 요즘은 이 3가지 범주 중 하나에 집착하지 않고, 그냥 돈벌이(?)를 위해 모든 수단을 다 동원하다 보니 상당히 유명무실해진 분류이기도 하다. 물론, 혼동을 막기 위해 이 3가지 분류는 기능적(?) 분류와는 다르단건 알아두자.
각 분류의 가장 중요한 '실용적' 특징은 다음과 같다.
- 컴퓨터 바이러스: 다른 코드들을 감염시킬 수 있다.
- 트로이목마: 정상 코드인 것처럼 보이지만 (혹은 아예 이게 뭔지도 모르지만) 사실 원래부터 악성코드.
- 웜: 네트워크를 통해 구현된다. (다른 코드를 감염시키거나, 정상 코드로 위장하지 않아도 된다.)
2.1.1. 컴퓨터 바이러스
바이러스가 어원이다. 문자 그대로 바이러스처럼 행동하는 악성코드라서 이런 이름이 붙었다. 이 악성코드 작동 방식의 가장 중요한 특징은 생물학적 바이러스와 비슷하게, '''다른 코드에 끼어들어가 감염시킬 수 있다'''는 것.
악성코드를 통틀어 바이러스라고 하는 경우가 많은데, 엄밀한 의미의 컴퓨터 바이러스는 실제 바이러스와 비슷하게 다른 코드 속에 끼어 들어가 해당 코드가 실행될 때 같이 동작하면서 (= 자가실행 불가) 자기 코드를 복제해 다른 코드에 끼워 넣으며 확산되는 (=자기복제) 방식의 악성코드만을 말한다.
트로이 목마와 다르게 정상 코드에 자기 코드를 끼워 넣는 (=감염) 방식이며, 따라서 처음부터 악성코드를 정상코드로 속여서 전파되는 트로이 목마와는 다르다. 트로이목마는 감염이 아닌 위장을 취하므로 바이러스와 달리 자가복제 기능이 굳이 필요하지 않다.
웜의 경우 네트워크 상에서 존재하며 해당 네트워크에 연결된 모든 기기를 공격할 수 있기 때문에 자가복제 자체가 필요 없다. 물론, 피해를 더 악화시키기 위해 바이러스의 방식, 곧 데이터 파괴를 끼워넣을 수는 있고, 비슷한 개념으로 웜으로 구현된 랜섬웨어가 있다. (워너크라이 등)
백도어나 스파이웨어의 경우 만들기에 따라서 트로이 목마, 웜, 바이러스 3가지 형태 중 아무거나 골라 만들 수 있다. 쉽게 말해 백도어나 스파이웨어를 숙주 컴퓨터에 심기 위해 트로이 목마, 웜, 바이러스 형태로 만들어진다.
컴퓨터 바이러스는 다른 데이터의 코드들 변형 시키는 작동 방식 덕분에 보안 프로그램에게 적발되기 쉽고, 네트워크 전체를 작살낼 수 있는 웜과 달리 전파가 까다로워 요즘은 거의 보기 힘든 악성코드 유형이지만, 한번 감염되면 온갖 코드에 다 끼어들어가 코드를 더럽히고 작동하면서 데이터를 죄다 파괴하는 것이 가능하므로, 일단 피해가 발생할 경우 제일 더러운 유형이다. 이 때문에 데이터를 공격해 자기복제 하는 개념 자체는 도태되었더라도, 데이터를 파괴하는 실질적 효과는 요즘도 대부분의 악성코드에 첨가된다.
[1]
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. 랜섬웨어
이름의 어원은 Ransom(인질) + Ware. 이름 그대로 감염자 컴퓨터의 데이터에 접근할 수 없게 암호화를 걸고, 데이터를 인질로 삼아 잠금을 해제하는 키를 대가로 금품을 요구하는 악성코드의 통칭이다. 악성코드 가운데서도 가장 질이 나쁘고 악랄한 종류로 현재로서는 예방을 해도 확신할 수 없는, 최악의 악성코드. 지금으로서의 최선의 예방책은 신뢰하지 못할 메일을 열어보거나, 사이트를 들어가지 않는 것이다.
2.2.7. 애드웨어
광고를 보여주는 프로그램을 통칭한다. 사용자 동의 없이 몰래 설치되는 악성코드일 수도 있지만, 눈속임을 통해 은근슬쩍 사용자의 동의를 받고 설치되는 PUP 형태도 많다. 자세한 것은 해당 문서 참조.
합법적(?)으로 활동하는 경우도 많다보니 정보통신망법에서도 악성코드와는 별도로 규정하고 있다. 일단 악성 활동을 하니 엄밀히 따지면 합법(?) 여부와 무관하게 악성코드이긴 하다.
2.3. 기타
- : 실존하지 않는 악성코드가 존재한다고 사람을 속이는 행위. 컴퓨터의 영역은 아니다.
- 과금형 악성코드: ARS 또는 유료 SMS(건당 x원) 서비스에 전화를 걸어 돈이 빠져나가게 되는 경우.(안랩의 글)
- 조크 바이러스: 컴퓨터가 아니라 사용자의 멘탈을 공격하는 악성코드. 자세한 사항은 해당 문서 참조.
- 허위백신: 금전적 이득을 얻으려는 목적으로 백신 프로그램을 사칭하는 불법 행위. 자세한 것은 해당 문서 참조.
- istartsurf
- cl ncclick 인터넷 익스플로러에서 뭔가 검색만 하면 관련 키워드로 온갖 쇼핑몰 사이트로 안내하는 악성코드.
3. 악성코드 분석 관련 정보 제공 사이트
- 바이러스토탈(미국): https://www.virustotal.com
- malwr: https://malwr.com
- virscan: http://www.virscan.org
- 메타스캔 온라인(미국): https://www.metascan-online.com
- 제로서트(한국): http://www.zerocert.org
- 멀웨어즈닷컴(한국): https://www.malwares.com
- 망고스캔(한국): https://www.mangoscan.com
- 포이즌아이(한국): https://poisoneye.info
- 캐츠워즈(한국): https://exts.kr
[1] 컴퓨터 바이러스의 경우 바이러스 코드 자체를 암시장에 판매하는 수익 모델을 취하나, 랜섬웨어는 감염된 사용자에게서 직접 돈을 갈취하므로 돈도 더 잘 벌리고 코드의 재사용도 용이하다.