[Threat Analysis] 리눅스 악성코드의 진화, 어디까지 왔나
리눅스 악성코드는 2014년에 들어서며 큰 폭으로 증가하고 있다. 리눅스는 지금까지 상대적으로 안전한 운영체제(OS)로 인식되고 있는 것이 사실이다. 그러나 전 세계 서버 시스템의 상당수가 리눅스를 기반으로 운용되고 있는 만큼 리눅스 악성코드의 증가 추세는 결코 간과해서는 안 된다. 더욱이 국내에서는 라이선스 비용 문제로 인해 공공 기관을 중심으로 리눅스 기반의 서버 이용이 증가할 전망이다. 이 글에서는 2014년 국내에서 발견된 리눅스 악성코드를 중심으로 최근 지속적으로 나타나고 있는 리눅스 악성코드의 특징을 알아본다.
<연재 목차>
1부_최신 리눅스 악성코드 동향 (2014년 11월호)
2부_2014년형 리눅스 악성코드 분석 (이번호)
2014년에 발견된 리눅스 악성코드 중 상당수는 DDoS 공격 기능이나 가상화폐 채굴 기능을 갖고 있다. 리눅스 악성코드 제작자는 리눅스 기반의 시스템 중 상대적으로 사용자 수가 적은 개인 컴퓨터보다는 서버를 노린다. 성능 좋은 서버의 강력한 성능을 이용하기 위함으로 보인다.
■ 카이텐(Kaiten)
카이텐(Kaiten)은 쓰나미(Tsunami, Sunami), Sunam 등으로도 불리는 DDoS 공격 악성코드이다. 2002년 처음 발견된 이후 12년이 지난 지금까지도 변종이 등장하고 있다.
패킹된 파일은 대략 18,000바이트 내외이며 패킹 되지 않은 파일은 27,000바이트 에서 40,000바이트 내외의 길이를 갖고 있다. 660,000바이트가 넘는 변형도 존재한다. [그림 1]과 같이 쓰나미(TSUNAMI) 등의 문자열을 포함하고 있는 것이 특징이다.
[그림 1] 카이텐에 포함되어 있는 ‘쓰나미(TSUNAMI)’ 문자열
카이텐 악성코드의 소스코드가 공개되어 있어 손쉽게 변형을 제작할 수 있다. 2011년에는 이를 이용해 OS X 버전으로 포팅된 변형이 발견되었으며 지금도 꾸준히 변종이 발견되고 있다.
[그림 2] 공개된 카이텐 소스코드
■ 엘놋(Elknot)
엘놋(Elknot)은 메이데이(Mayday), Chikdos 등으로 불리는 악성코드로 2014년 초에 처음으로 발견되었다. 2014년 5월부터 다수의 변형이 제작되고 있으며 전 세계에 걸쳐 해당 악성코드에 의한 감염이 보고되고 있다.
해당 악성코드의 길이는 패킹된 파일의 경우에는 대략 270,000 ~ 500,000바이트이며 언패킹 된 파일은 1,500,000바이트 내외이다. 일부 변형에는 ‘MainBeikong’과 같은 문자열이 존재한다.
[그림 3] 엘놋 악성코드 변형에서 발견되는 특징적인 문자열(1)
또는 소스코드 이름인 ‘Fake.cpp’, ‘ThreadAttack.cpp’, ‘FileOp.cpp’ 등이 포함되어 있는 경우도 있으며, 일부 변형은 ‘ThreadAttack.cpp’ 대신 ‘Attack.cpp’나 ‘ThreadAtk.cpp’와 같은 이름을 갖고 있다.
[그림 4] 엘놋 악성코드 변형에서 발견되는 특징적인 문자열(2)
해당 악성코드와 변종은 중국에서 제작되는 것으로 추정된다. 한편 생성기를 이용해 해당 악성코드를 만들어 내는 과정이 해외 보안 블로그를 통해 공개된 바 있다.
■ 싸보봇(Ssabobot)
싸보봇(Ssabobot) 또는 보싸봇(Bossabot)은 2014년 8월 말 처음 발견되었다. 보통 UPX 등으로 패킹되어 있으며 16,000바이트 ~ 22,000바이트의 길이를 갖는다. 이 악성코드에 감염된 시스템은 비트코인과 같은 가상화폐를 생성하는 프로그램을 다운로드하여 채굴한다.
2014년 9월 15일, 해외 보안 업체가 블로그를 통해 해당 악성코드에 대해 언급했는데, 이에 따르면 2014년 8월에 해당 악성코드 제작자인 BoSSaLiNiE가 남긴 글이 확인되었다([그림 5]). 국내에서도 8월 말경 초기 버전에 의한 감염이 확인되었으며, 9월경에는 변형도 발견되었다.
[그림 5] 싸보봇 악성코드 제작자가 남긴 글 *출처: 스파이더랩 블로그
한편, 싸보봇 악성코드 제작자는 [그림 6]과 같이 해당 악성코드를 100 ~ 125달러에 판매하고 있으며, 업데이트 시 25달러를 요구하고 있다.
[그림 6] 싸보봇 악성코드 판매 가격
싸보봇은 [그림 7]에서 볼 수 있는 것처럼 ‘BoSSaBoTv2’와 같은 문자열이 존재하는 것이 특징이다.
[그림 7] 싸보봇 악성코드 내 특징적 문자열
UPX와 같은 실행 압축 프로그램을 이용해 압축된 경우도 많으며 패킹된 상태에서도 BoSSaBoTv2와 유사한 문자열이 확인되기도 한다.
[그림 8] 패킹된 파일에서도 발견되는 싸보봇 악성코드의 특징적인 문자열
싸보봇 악성코드는 2013년에 발견된 리눅스 웹 서버의 아파치 및 PHP 취약점을 이용해 전파된다.
[그림 9] 싸보봇 악성코드의 PHP 코드
지난 10월 발견된 싸보봇 변형은 보싸봇(BoSSaBot)과 같은 문자열이 나타나지 않았으며(제거되었으며) PHP 코드도 변경되었다.
[그림 10] 2014년 10월 발견된 싸보봇 악성코드 변형의 문자열
■ 리버스쉘(Reverseshell)
지난 9월 발견된 리버스쉘(Reverseshell)은 200바이트도 되지 않는 크기의 악성코드로 스몰(Small), 배쉬렛(Bashlet) 등으로도 불린다. 어셈블리로 제작되었으며 인터럽트 80h로 시스템 기능을 호출한다. 리버스쉘 악성코드는 [그림 11]과 같이 32비트 버전과 64비트 버전이 존재한다.
[그림 11] 리버스쉘 악성코드 32비트 버전(상) / 64비트 버전(하)
리버스쉘은 특정 주소로 접속 후 쉘(Shell)로 원격 제어를 수행한다.
지속적으로 발견되는 리눅스 악성코드…사물 인터넷까지 노려
올해 들어 리눅스 악성코드가 급격히 증가하고 있다. DDoS 공격이나 백도어, 자신의 존재를 숨기는 루트킷(Rootkit) 기능을 가진 리눅스 악성코드나 ARM(Advabced RISC Machines)과 MIPS(Million Instruction Per Second) 등의 프로세스로 구동되는 사물인터넷을 노리는 등 리눅스 악성코드의 기능 또한 다양해지고 있다.
특히 대부분의 사물인터넷 시스템에는 백신 프로그램이 존재하지 않아 악성코드 감염 여부를 확인하기도 쉽지 않다. 리눅스 악성코드는 2015년에는 보다 다변화될 것으로 예상된다. 결국 여타 시스템과 마찬가지로 리눅스 시스템을 안전하게 이용하기 위해서는 ▲복잡한 암호를 사용해야 하며 ▲최신 보안 업데이트를 적용하는 것이 기본이자 필수다.@
<참고 사이트>
http://www.welivesecurity.com/2011/10/25/linux-tsunami-hits-os-x
http://blog.malwaremustdie.org/2014/11/china-elf-botnet-malware-infection.html
http://blog.spiderlabs.com/2014/09/honeypot-alert-bossabotv2-irc-botnetbitcoin-mining-analysis.html
- AhnLab분석팀 차민석 책임