본문 바로가기

Security Indicator/Insight

2009.7 DDos 악성코드 그 암울한 사실과 전망에 대해

DDos 악성코드에 대한 추론과 사실, 암울한 전망
                                                 - 바다란

 

 

 

악성코드에 대한 기술적인 분석들이 많이 발표 되고 있다.

정형화된 악성코드에 대한 분석들은 감염 방식과 행위 기반에 대해 제대로 설명하기 어렵다.

 

이번 DDos 공격에 사용된 Agent들의 유포방식과 사전인지가 어려웠던 점들에 대해서는 몇 가지 분석된 사실에 기반하여 추론이 필요한 상황이다. 현재 DDos 공격에 사용된 좀비PC들의 수치가 각 기관별로 상이함이 있는데 이중 상당수 최소 절반 가량은 허수임으로 인정 되어야 한다.

 

내부 공격코드에는 IP 주소를 위장하여 접속요청을 시도하는 ( IP Spoofing) 공격 유형이 존재하며 실제 IP를 이용한 공격( 또 다른 유형의 DDos 공격을 위해)  같이 이루어 졌다.

 

이 의미는 IP를 위조한 공격과 실제 감염된 PC IP 주소를 이용한 공격이 같이 이루어졌음을 의미한다.

최소 4~50% 가량의 공격로그는 IP가 위조된 공격이라고 볼 수 있다. 실제 공격 로그에서 최소한 절반 정도는 차감 되어야 하는 이유이다. 또한 악성코드의 코딩기법을 통해 전문성은 떨어진다는 의미들이 있으나 패킹을 하였을 경우에는 분석에는 어려움이 있을지라도 패킹 자체만으로 위험성을 찾아내는 도구들에게 탐지 되었을 가능성도 있다. 코드 내에서도 중요 부분에 대해서는 분석이 어렵도록 암호화 한 것을 확인 할 수 있다. 사전 설치 단계의 인지를 피하기 위한 용도 였을 것으로 추정된다.

 

 

여러 가지 정황들이 있으나 현재까지도 아무도 추정하지 못하는 것은 악성코드의 최초 유포에 대한 내용들이다.

행위적으로 살펴 보면 여러 가지 점들을 발견 할 수 있으나 실제적인 증거는 찾지 못하고 있다. 아마 앞으로도 찾기는 어려울 것으로 예상된다. 보다 많은 정보를 접할 수 있는 곳이라면 조금 더 다를 수 있겠지만... 공격코드 자체가 로그 및 관련 정보를 제거 하는 것을 기본으로 하고 있어서 향후에도 근본적인 문제의 원인을 찾기는 오래 걸릴 것으로 보인다.

 

침해사고 분석에 대한 여러 가지 방법들 중에 근원지를 찾지 못할 경우에는 경험적으로 추론을 할 수밖에 없는 상황이 존재하게 되고 해당 방식대로 여러 가지 상황들을 관찰 하게 되면 일정 수준의 결론을 도출 할 수 있다.

 

공격 대상의 추가와 공격방법에 대한 내용은 이미 밝혀진 바 있다. 그러나 문제가 되고 있는 부분은 공격 대상을 갱신하는 부분이 아닌 공격에 사용된 여러 악성코드들이 최초로 유포된 방식은 무엇이고 어떤 형태로 사용자에게 뿌려 졌는가 하는 점이다.

 

msiexecX.exe 파일을 이용한 uregvs.nls 생성과 공격의 방법에 대한 내용은 설치에 관련된 부분이 아닌 공격 방식을 변경하고 대상을 변경하기 위한 방식 이였을 뿐이다. 현재 나온 기술적인 분석들은 모두 시스템에 설치된 악성코드들간의 연관관계와 기능에 중점을 두고 있으나 가장 필요한 부분은 , 어떻게 이런 것들이 설치 될 수 있었는가에 대해서는 아직 알려진 바가 없다.

 

추론을 통해 유추하려면 현재까지 드러난 사실을 종합하는 것에서 시작한다. 일부 분석에 참가한 경우이므로 조금 더 상세한 내용이 나올 수 있다.

 

l  감염된 PC들은 대부분 일반 사용자의 PC이다. IDC내에 서비스 중인 시스템들에는 거의 감염사례가 없다.

l  주위의 감염된 PC들 간의 연관성은 인터넷사용자 라는 점 외에 찾을 수 있는 연관성이 많지 않다.

l  감염된 PC들의 샘플조사 결과 특정 시점의 주된 로그들은 삭제 혹은 변조된 상태.

l  감염된 PC들의 Botnet 존재 여부는 없는 것으로 1차분석, 최소한 연관성은 매우 희박함

l  자체적인 전파기능은 없다. 즉 주위로 확산되지 않았다. (웜이나 바이러스 형태가 아님) 스팸 메일로도 전파 되지는 않는다.

l  주기적인 통신을 통해 새로운 업데이트 내용이 있을 경우 업데이트가 진행 되었다. ( 공격대상 및 공격 패턴)

l  AV의 탐지를 피하기 위해 예정된 일시에 일시적인 공격을 수행 하였다. 만약 산발적인 공격이 감염즉시 시작되었다면 최초 발견은 매우 일찍 이었을 것이다.

l  해외의 여러 IP들에게 접속 시도를 하고 이후 Action이 일어 나도록 되어 있다.

l  IP 위조 공격 외에도 다양한 형태의 DDos 공격이 이루어졌다.

l  명령을 전달 받는 채널을 다수 유지 하였고 ( 최소 6), 명령을 확인하는 Agent를 두 개로 두었다. 하나는 DDos 공격 Agent 다른 하나는 스팸 발송 Agent

l  설치된 Agent들은 분석을 어렵게 하기 위해 Anti debugging 혹은 파일 헤더 정보를 날리는 행위들이 일부 확인.

l  Agent간의 유기적인 관계를 유지. ( 패킹을 피하고 최소한의 데이터 암호화만을 진행한 것은 교차적인 참조로 정보를 얻어야 하는 경우라 그랬을 수도 있다.)

l  갱신된 Agent중 공격대상 파일을 생성하는 Agent는 전체적으로 10여개 가량의 Number를 가지고 있는데 이 것은 Version up과 동일한 유형으로 추정된다. (MSiExecX 버전 ) 명령전달 방식을 유추 할 수 있다.

l  공격대상 파일은 원격지의 서버의 활성화 여부를 확인 한 후 갱신이 된 것으로 파악되며 대부분 동일한 구성에 공격대상만 특정 파일에 의해 변경 1,2,3차 공격은 동일한 공격 유형에 대상만 변경된 형태이다.

 

위와 같은 특징들이 일반적인 자료와 직접 조사 중에 관찰이 되었다. 시사하고 유추 할 수 있는 점들이 충분히 있는 상태라 할 수 있다. 근거 자료를 확보 할 수 없는 경우에는 증거에 의한 프로파일링이 아닌 결과와 행위를 기준으로 한 프로파일링으로 접근 할 수 밖에 없다.

 

특징에 의해 추론 되는 내용은 다음과 같다.

 

전체적인 유형은 불특정 다수에게 AV에도 탐지 되지 않는 공격에 기반되는 Agent들이 배포되어 설치가 된 상태에서 공격이 임박한 시점에 해외의 숙주 IP에 공격대상을 지정한 msiexecX 파일의 갱신 혹은 다운로드를 지시한다.

해당 파일이 실행 후 생성된 uregvs.nls 파일에 공격대상과 공격시간과  유형이 기록 되었을 것이다

 

시간 동기화가 된 이후에 특정 날짜에 도달 하게 되면 지정된 시간 동안 지정된 공격 형태로 계속적인 공격이 발생 하였을 것이다. 이때에 이르러서야 개인 PC 사용자들 중 이상 증세를 감지한 사용자에 의한 신고로 최초 샘플들이 신고가 되고 분석이 되게 된다. 이후의 사고 대응은 알려진 바와 같다.

 

그렇다면 공격이 종료된 이유는 숙주 IP들에 대한 빠른 분석으로 차단이 이루어져서 설치된 Agent update가 차단됨으로써 가능했다고 본다.

 

 연결되는 다양한 채널에 대해 (최소 2개의 Agent) 관찰 및 분석이 이루어 졌고 해외의 숙주 서버로 접근하는 IP가 분석이 되어 ISP단위에서 In/Out이 차단된 상태 이기에 이미 사전에 예정된 공격만이 유효했다는 점이다.

 

이제 상당히 많은 시스템에 설치된 (한국의 상황에 비추어 보면 그리 많은 시스템들도 아니라고 할 수 있다.) 공격을 위한 기반 악성코드들은 어떻게 사전에 미리 설치 될 수 있었을까? 하는 의문을 풀어야 한다.

 

 

최초의 악성코드는 악성코드가 아니다.

 

최초의 악성코드들은 짧은 순간에 상당수의 시스템에 설치되어 공격한 것이 아니다.

이미 상당기간 준비기간을 거쳤을 것이 분명하며 상당비율의 개인용 PC에는 무료백신들이 활성화 되어 있는 상태라 이미 정체가 드러난 형태의 악성코드들을 설치 하는 것은 불가능하다.

만약 악의적인 값들이나 패킹된 흔적, 사용자 PC의 이상증세가 있었다면 보다 이른 시기에 정체들은 드러났을 것이다.

 

현재 발견된 악성코드들은 주기적인 특정 IP들에 대한 접속을 통해 명령과 공격유형을 전달 받는 형식으로 최종적인 준비를 하였으며 실제 공격이 발생되어 PC상에 이상증세를 확인 하여 신고하지 않는 이상 정체를 알 수가 없었을 것이다.

 

Antivirus 제품 대부분이 알려진 유형의 악성코드에 대해서만 악성으로 진단하고 있으며 시스템에 위해한 행위를 할 경우에만 악성으로 판정을 한다.

현재의 악성코드들은 시스템에 대한 위해 행위를 발견하기에는 어려운 상황이며 네트워크 트래픽을 발생 시키는 유형의 공격들만 존재하고 실제 동작하기 전에는 확인이 어려운 상태이다.

 

즉 필자가 생각하는 유형은 다음과 같다.

 

최초엔 여러 가지 방법으로 사용자의 PC에 기본적인 공격 Agent와 명령을 받는 Agent들이 설치가 되고

이후에 공격명령을 전달 하는 해외의 복수의 IP에서 명령코드와 새로운 코드가 올려지게 되면 개인 PC에 설치된 Agent들은 공격코드를 다운로드 받고 추가적인 업데이트를 통해 새로운 유형으로 변경된다.  이 상황에서도 모든 AV 프로그램에서 악성으로 진단 되지는 않는다. 그 이유는 시스템에 피해를 미치는 것이 없거나 처음 발견되는 패턴이기 때문이다.

 

공격 명령은 공격 유형과 공격 대상을 지정하여 갱신되는 형태로 되어 있으며 지정된 일자에 지정된 유형의 공격을 대상을 향해 시작하게 된다. 이 과정에서 비 정상적인 행위들을 감지한 개인 사용자들은 AV 업체에 신고를 하게 되고 확대 조사를 통해 위험성을 확인한 AV 업체는 대응하게 된다이때에 이르러서야 주요 AV 업체들에 의해 악성코드 혹은 악성 행위를 하는 유형으로 분류가 되어 처리가 되기 시작 하였을 것이다.

 

이후에는 여러 언론기사나 보안업체의 설명대로이다.

 

 

최초 유포 방식은 무엇?

 

최초 유포 방식은 서두의 관찰 결과에서 언급 하였듯이 불특정 다수에게 설치가 되었으며 불특정 다수의 공통점과 범위의 한정은 매우 어려운 상태로 보인다. 따라서 인터넷 사용자를 대상으로 잡을 수 밖에 없다.

 

최근 몇 년간 사용자에게 사용자에게 악성코드를 유포한 가장 활발한 통로는 웹서비스였다. 웹서비스를 해킹한 이후 소스코드 변조를 통해 사용자가 웹 사이트에 접속 하였을 경우에 취약성을 공격하거나 파일을 설치 하는 형태로 악성코드들이 설치가 된다. 대부분의 사용자들은 이미 알려진 악성코드 유형의 경우 사용 중인 백신에 의해 악성코드 유포 사실을 아는 것 외엔 방법이 없다.

 

만약 악성코드로 탐지되는 유형이 아니라면 .. AV업체에 등록된 악성코드 패턴이 아니고 유사 의심사례로 추정이 가능한 그런 형태가 아니라면  감지 할 방법은 없다.

 

불특정 다수에게 감염을 시키고 또 주위로 확산 기능을 가지지 않은 악성코드들이 감염 될 수 있는 통로는 두 가지 외에는 존재하지 않는다. 이미 지난 주에 언급되었던 내용이다. 기존에 감염된 상태인 대규모 Bot net을 이용하거나 웹 서비스를 통한 악성코드 유포 외에는 불특정 다수에 대한 감염은 불가능하다.  대규모 Botnet이라면 일정부분 감염 PC에 흔적이라도 있어야 하나 몇 안 되는 PC들에서 그런 정보를 찾을 수는 없었다웹 사이트를 통한 기반코드들의 유포 및 설치라고 밖에 볼 수 없는 상황이다.

 

 만약 추가적인 정황에서 Botnet 연관으로 볼 수 있는 정황들이 발견 된다면 기존의 Botnet 채널과는 다른 방식인 Semi Active유형인 새로운 방식으로 보아야 한다. Botnet server에서 직접 연결을 통해 제어 하는 방식이 아니라 Agent에서 Server로 주기적인 연결을 하여 명령을 받는 형식으로 볼 수 있다. 그 동안의 Botnet에 대한 관점을 전환해야 하는 중대한 시사점이라 할 수 있다.

 

 

드러난 문제점과 향후 전망

 

 

현재의 상태에서 지적이 필요한 부분은 국가나 산업전체적인 문제점을 넘어 보안분야에도 넘어야 할 문제와 벽들이 드러난 상태다. 전체적인 문제와 대응 부분은 이전의 Article에서도 지적한 바가 있다. 보안분야에서 넘어야 되는 문제는 공격이 시작 되기 전에는 징후를 판별 할 수 없다는 문제점과 하루에도 수백여 개의 서비스 사이트들이 악성코드 유포를 위한 숙주 사이트로 활용된다는 명확한 사실 때문이다.

 

악성코드의 기능을 가지고 있지 않은 설치 유형에 대한 사전 판별은 어떻게 할 것이며 ( 실상 이번 공격에 실제로 주된 역할을 한 두 가지 정도의 악성코드를 악성이라고 판별할 기준은 없지 않을까? 그 자체만으로는 사용자의 PC에 영향을 주거나 위해한 행위를 하지 않는다. ) 현재 악성코드들의 정보를 일정부분 추론이 가능했던 부분들에 대해서 학습이 되어 보강한다면 다음은 어떻게 될 것인가?

 

유포하기 위한 통로들도 다수 살아 있고 ( 취약한 서비스들은 그만큼 많다. ) 공격 코드에 대한 판단 기준도 애매하다. 실제 공격이 발생 되기 전에는 악성코드라고 판단하기가 어렵다.

 

문제 부분은 다음과 같다.

 

 공격 방식의 변화 – agent에서 서버로 접속하여 업데이트를 확인/대기 하는 형태

 탐지 루틴의 우회 초기부터 악성코드로 탐지될 내용을 뿌리지는 않는다.

 유포 증거의 제거 초기 설치된 기반 코드들이 어떤 방식으로 설치 되었는지 정보가 없다.

 유포 통로의 다양화 취약한 서비스들의 존재

 

크게 위와 같은 문제들을 나열 할 수 있다. 각 항목에 대한 대책은 어렵다. 이 문제는 세계적인 문제이다. 어느 누구도 풀지 못한 숙제이고 그 도전에 한국의 IT서비스는 직면하고 있다. 그리고 지금 공격자들은 이런 문제들에 대해서 공개적으로 확인과 테스트 그리고 검증이 완료된 상태이다.

 

곧 변화되어 분석이 더 어려워진 형태의 공격은 발생 할 것이다. 코드상의 개선과 해외 숙주 사이트들의 확보, 국내에서의 Agent 확보를 위한 시간을 고려하면 공격자의 의지만 있다면 1개월 이내에 보다 업그레이드된 공격을 맞이 하게 될 것이다. 더불어 본래의 공격자 그룹이 아니라 의도를 지닌 프로젝트 그룹에 의해서도 충분한 활용이 될 상황이다. 검증된 방식의 활용은 기본적인 학습능력이기에 더욱 그렇다.

 

절체절명의 시간임을 인지하는 곳이 있을까?

2년 전에 느낀 두려움은 이제 널리 퍼져 간다. 이제는 시간이 많지 않다. 정말로

또 다시 다가 올 때에는 지금처럼 끝나지는 않을 것이다.

 

-      2009.7.13 바다란 세상 가장 낮은 곳의 또 다른 이름.

 

 

 * 이전 글에서 전체적인 관점에 대해서 언급 하였다. 지금까지 변화된 유형에 대해서는 언급하는 곳이 없어 가슴 한켠에 답답함이 가득했다. 그 답답함을 해소하기 위한 차원에서 올린 글이다. 다음편을 또 쓸 것인가에 대해서는 예정 된바 없다.