CHAMCHICON SEASON 1 – 핵인싸들의 해킹 기법 배우기

드디어 제 1회 참치콘 3주여 앞으로 다가오고 있다. 크지 않은 행사로 조그마하지만 강력한 주제들을 선정해서 제한된 실무 그룹들이 모여서 정보를 공유하는 모임으로 5월 9일과 10일 양일간 저녁 시간에 열린다. 장소는 판교 근처로 섭외중이다. 왜 내가 참치콘을 기획했는지는 김치콘, 참치콘, *치콘을 참고해 보기를 바란다. 연재를 통해서 지금까지 치열한 경쟁을 뚫고 선정된 몇몇 세션들에 대해서 간략하게 설명해 보는 자리를 가질까 한다.


  • Speaker: jz
  • Duration: 50 minutes
  • Type: Intelligence

핵인싸들은 요즘 어떻게 해킹을 할까? 알고 싶다면, 이 세션을 듣기를 강추한다. 이전 Practical Threat Hunting 세션 소개에서도 말했지만, Living Off the Land라는 핵인싸 기법이 요즘 대세인 것은 어느 정도 알것이고, 그렇다면 어떻게 이러한 threat 들을 분석하고 그 기법을 배우고 대처할 것인가라는 문제가 남게 된다. 이 세션에서는 실제로 공격에 사용된 샘플들을 사용해서 그 내용을 분석하고, 어떠한 그룹이 그 배경에 있는지 attribution도 해 보고, 어떠한 보안 장치와 예방법들을 사용해서 이러한 공격 기법들을 막아 낼 수 있을지에 대해서 생각해 보는 시간을 가질 예정이다.

스피어 피슁 + VBA 매크로

요즘 많은 공격들은 이메일 피슁과 함께 매크로가 첨가된 오피스 문서를 통해서 이뤄진다. 이러한 오피스 공격 코드는 사실 인코딩을 통해서 쉬운 분석을 방해한다. 추가적으로 이러한 기법을 통해서 여러 보안 제품들을 우회할 수 있는 효과도 부수적으로 얻고 있다. 이러한 매크로는 AMSI 를 통해서 가시성을 확보하려는 노력이 계속 되고 있다. 자세한 내용은 마이크로소프트의 블로그 포스트를 통해서 알 수 있다. 해당 글의 다음 도식도에서 볼 수 있듯이 오피스가 실행될때에 아무리 난독화된 VBA 매크로라도 행위 로그를 추출하여 AMSI 를 통해서 Anti-malware 제품으로 피드하여 스캐닝을 진행 할 수 있다. 이러한 기능은 사실 Microsoft Defender 뿐만 아니라 다른 Anti-malware 벤더들에게도 공통적으로 제공되는 기능이다.

또한, 어떻게 WDEG (Windows Defender Exploit Guard)의 ASR (Attack Surface Reduction)을 통해서 이러한 threat을 mitigation할 수 있는지는 다른그림에서 제공하는 트레이닝을 통해서도 실습과 함께 자세한 정보가 제공되니 관심 있는 분들은 참여 바란다. 사실 ASR 자체만으로는 기존에 존재하는 환경과 많은 호환성 문제를 일으킬 수 있으므로, 최신 threat들의 방법 분석과 각 mitigation 방법들에 대한 심도 있는 이해를 통해서만 쓸만한 mitigation 환경 구축이 가능하다.

이 핵인싸 threat을 분석하신 핵인싸 해커 jz님에 의하면 이 threat은 여러가지 난독화 (obfuscation) 기법을 사용했기에 그 분석에 시간이 많이 걸린 것으로 보인다. 왜 이러한 자세한 분석이 필요할까? 그냥 가상 환경에서 해당 threat을 실제로 구동해 보고 그 행위자체를 분석할 수 도 있지만, 그러할 경우 세세한 micro-behavior들에 대한 정보나, 난독화가 해제된 상태의 코드 분석등이 이뤄지기 힘들고, 해당 threat이 가상 테스트 환경이나 사용자 환경을 탐지하고 실행을 중지하는 경우가 생길수도 있다. 그러한 관점에서 이러한 step-by-step 형태의 end-to-end 위협 분석 작업은 많은 경우 필수적인 경우가 많다. 이 세션을 통해서 특별한 도구 없이 손쉽게 세세한 VBA 매크로 분석이 가능한 방법에 대해서도 논의할 예정이다. 만약 오피스를 통한 공격 등에 노출된 적이 있는 환경이라면, 이러한 기법들을 조금 익혀 놓는 것이 앞으로의 분석 생활에 많은 도움이 될 것으로 판단된다.

다단계 PowerShell 난독화

역시 핵인싸들은 PowerShell을 사용한다. 왜 PowerShell이냐라는 질문을 할 수 있지만, 해답은 그냥이라고 할 수도 있다. 하지만, anti-malware와 malware 사이의 전쟁을 살펴 볼때에 malware들이 PowerShell에 눈을 돌린 것은 신의 한수에 가깝다. 많은 경우 anti-malware나 threat hunting 들은 사실 시스템에 드랍된 파일들에 굉장히 집착한다. 많은 threat들이 PE 파일 형태로 이뤄진 것도 사실이었고, anti-malware 제품들의 엔진 자체가 PE 파일에 최적화되어서 설계되었던 것도 사실이기 때문이다. PowerShell은 이러한 트렌드에서 게임의 장을 완전히 바꾸어 놓았다.

PowerShell은 굉장히 강력하다. 운영체제의 거의 모든 기능에 억세스 할 수 있는 API를 가지고 있고, 풍부한 cmdlet 라이브러리를 가지고 있다. 시스템에서 원하는 거의 모든 행위들을 할 수 있다. 다만, 한가지 PowerShell의 약점은 소스 코드가 노출 된다는 것이다. 그를 해결하기 위해서 악성 코드들은 PowerShell 난독화를 시도한다. 많은 경우 1단계 난독화로는 안심이 안되어서인지, 적어도 3단계 내지는 4단계의 난독화를 시도한다. 이러한 난독화를 어떻게 효율적으로 풀고 PowerShell을 분석할지에 대해서는 Automatic decoding of highly obfuscated PowerShell code 토크를 듣기를 추천한다. 하지만, 아직 이렇게 자동화를 사용한다고 해도 다단계 난독화는 여전히 상대하기 부담스럽다. 이 세션을 통해서 여러가지 트릭과 방법론들을 사용하여 어떻게 손쉽게 이러한 복잡하게 얽힌 threat을 분석할 수 있는지에 대해서 배워 보기 바란다.

왜 굳이 PowerShell을 모두 단계별로 분석해 봐야 할까 라는 의문이 들 수 있다. 그 해답은 바로 다음 단계에 있다. 많은 경우 거시적인 시스템 행위만을 체크하는 아싸 분석가들은 놓치는 것이 있다. 최근 인싸 threat 들은 거시적인 형태의 행위 데이타를 만들어내지 않는 방향으로 진화하고 있다라는 것. 이러한 다단계의 PowerShell이 최종적으로 진행하는 행위는 바로 다음 단계 Reflective DLL Loading이다.

Reflective DLL Loading

Reflective DLL Loading은 한마디로 LoadLibrary등의 API를 사용하지 않고 DLL 등의 모듈을 메모리로 직접 로딩하고 실행하는 기법을 지칭한다. 로씨아에서도 알아 주는 한 핵인싸 해커의 프레젠테이션에 아주 좋은 다이어그램이 있어서 뽑아 왔다. Reflective DLL Loading은 쉘코드나 파워쉘 형태의 메인 loader 코드가 존재하고, DLL을 로딩할 메모리 공간을 확보한 다음에 여러가지 DLL 섹션들을 복사한 후에 DLL 로더할 행위들을 모두 일일이 해주는 과정이다.

이 것이 왜 아싸 분석가들에게 문제 될것인가. 아싸 분석가들은 사실 귀차니즘도 있고 해서 아까 말했듯이 매크로 행위들에 집중한다. Procmon이라든지 Fiddler라든지 아싸스러운 툴들을 이용해서 대충 흠, LoadLibrary 같은게 일어 났나, C2 커넥션은 어디로 등등을 훓어 보기 때문에, 만약 PowerShell에 PE가 임베디드된 형태로 Reflective DLL Loading까지 일어 나면, 혼란의 도가니탕에 빠지게 된다.

결국, 최종 payload를 확보하지 못하게 되고, 왜 자신의 기관이 이러한 공격을 당하게 되었고, 누가 공격을 했는지에 대해서는 오리무중에 빠질 가능성이 높다. 최종 payload 확보는 사실 threat analysis의 기본 중의 기본이다. 그 이후에 attribution이라든지, 보안에 대한 대책 들이 나올 수 있다.

Attribution

사실 attribution은 가장 어려운 분야중의 하나이다. Attribution은 때때로 과장되기도 하고, 미디어를 이용한 홍보에 이용 되기도 한다. 하지만, 인싸 분석가들은 이러한 유혹에도 불구하고 항상 쿨니스를 유지하려고 노력하고 객관적인 데이타에 바탕한 attribution을 하려고 노력할 것이다. 이 threat을 분석하신 jz님이 어떻게 쿨하게 attribution을 하는지, 그 추론 과정에 대해서도 많이 배우고, 피드백을 줄 수 있는 시간이 될것으로 보인다.

이러한 공격 체인은 요즘에 너무 나도 유행하는 패턴이다. 피슁 메일과 파워쉘, 그리고 Reflective DLL Loading. 하지만, 반대로 생각해 보자, 왜 이렇게 어떻게 보면 단순한 패턴이 유행하고 있을가. 해답은 바로 기존 방어 체제가 이러한 공격 유형에 대해서 좋은 가시성을 가지고 있지 않기 때문이다. 어떻게 모든 파워쉘 execution에 대해서 로그를 남기고 분석할것이가? 여러분들이 알게 모르게 윈도우즈 시스템에서는 시도 때도 없이 수 많은 파워쉘 스크립트들이 돌고 있다. Noise와 signal을 어떻게 구별할 것인가? 어떻게 VBA 매크로가 악성인지 양성인지 판단할 것인가? 어떻게 비지니스 로직에서 오피스 매크로를 제거할 것인가? (아마 제거 불가능한 조직들도 많을 것이다). 어떻게semantically, syntactically 다단계로 obfuscated 된 스크립팅 threat들을 구별할 것인가? 어떻게 메모리 속에 조용히 로딩된 DLL을 탐지하고 스캐닝할 것인가? 여기에는 간단해 보이면서도 복잡한 여러 물음들이 존재한다. 이 세션을 통해서 이러한 물음과 답에 대해서 생각해 보고, 향후 보안 제품이나 보안 서비스 도입에 있어서 좋은 insight를 얻어 가기를 바란다.

*참치콘 예약 정책: 다음 링크에 들어가서 참가 신청 가능하고, 참가자 신분 확인 절차 거칠 예정입니다. 참치콘에서 공유된 정보는 외부에 공개 불가하고, 다만 기업 내 환경에서 적용과 팀내 공유는 가능합니다.

May/9/2019 (Thr) – Technical Sessions

Full day ticket

StartEndNameSpeakerDescription
17:0017:20The Hitchhiker’s Guide to the Cloud SecurityJune Park
17:2018:10Automatic Decoding of Highly Obfuscated PowerShell CodeMatt OhDescriptionTicket
18:1018:40Non-ActiveX + IOT = OLLEH 🙂XXXXXDescriptionTicket
18:4019:00Tea break/buffer
19:0019:50Practical Threat HuntingsommaDescriptionTicket
20:0020:50Betrayal of Reputation: Trusting the Untrustable Hardware and Software with ReputationSeunghun Han
21:0021:50Recent Android Kernel Exploitation: KNOX Kernel Mitigation Bypassesx82DescriptionTicket

May/10/2019 (Fri) – Intelligence Sessions

Full day ticket

StartEndNameSpeakerDescription
17:0017:504차 산업혁명시대 지능형 제어기기 보안Jungmin KangTicket
18:0018:50Do not blame your parents: from plastic spoon to personal TI environmentEMNSTRDescriptionTicket
19:0019:30주제 비밀 (특정 액터 연구)hypenTicket
19:3020:00해커그룹 004 의 공격패턴과 특징, 그리고 흔적JC Lee
20:0020:50PE보다 스크립트 – 핵인싸 악성코드의 진단 우회방식jzDescriptionTicket
21:0021:50Tick Tock Tick tock – Tick 그룹의 동아시아 지역 10년 활동mstoned7Ticket

May/9/2019 (Thr) – Technical Sessions

Full day ticket

StartEndNameSpeakerDescription
17:0017:20The Hitchhiker’s Guide to the Cloud SecurityJune Park
17:2018:10Automatic Decoding of Highly Obfuscated PowerShell CodeMatt OhDescriptionTicket
18:1018:40Non-ActiveX + IOT = OLLEH 🙂XXXXXDescriptionTicket
18:4019:00Tea break/buffer
19:0019:50Practical Threat HuntingsommaDescriptionTicket
20:0020:50Betrayal of Reputation: Trusting the Untrustable Hardware and Software with ReputationSeunghun Han
21:0021:50Recent Android Kernel Exploitation: KNOX Kernel Mitigation Bypassesx82

May/10/2019 (Fri) – Intelligence Sessions

Full day ticket

StartEndNameSpeakerDescription
17:0017:504차 산업혁명시대 지능형 제어기기 보안Jungmin KangTicket
18:0018:50Do not blame your parents: from plastic spoon to personal TI environmentEMNSTRDescriptionTicket
19:0019:30 주제 비밀 (특정 액터 연구)
hypenTicket
19:3020:00해커그룹 004 의 공격패턴과 특징, 그리고 흔적JC Lee
20:0020:50PE보다 스크립트 – 핵인싸 악성코드의 진단 우회방식jzDescriptionTicket
21:0021:50Tick Tock Tick tock – Tick 그룹의 동아시아 지역 10년 활동mstoned7Ticket

* 참치콘 스케쥴표: https://darungrim.com/intelligence/Chamichicon-2019-05.html

Leave a Reply