/
세분화

보안 취약점: 공격자가 네트워크에 침입하여 확산하는 방법

다음과 같은 상황을 상상해 보세요:

바쁜 날 회의 사이에 간단하게 샌드위치와 음료를 사기 위해 근처 슈퍼마켓으로 달려갑니다. 주차장에서 지갑을 뒷좌석에 두고 왔지만, 새 차의 키를 눌러 잠그는 것은 잊지 않았습니다.

알고 보니 당신의 차량 모델에는 소프트웨어 오류가 있어서 리모컨 키로 앞쪽 두 문만 잠기고 뒤쪽 두 문은 잠기지 않는 문제가 있네요. 그러니까 당신이 가게 안에 있는 동안 도둑이 지갑을 발견하고 뒷문으로 들어가려고 하는 겁니다. 놀랍게도 문이 열리고, 그들은 당신의 지갑을 열 수 있게 되었습니다!

그 시나리오는 보안 취약점을 축소판으로 보여주는 사례입니다. 그 오류는 사소했고, 그 자체로는 아무런 문제도 일으키지 않았습니다. 누군가가 그것이 자신에게 어떤 정보를 제공하는지 알아차리는 순간 문제가 되었다.  

소프트웨어도 같은 방식으로 작동합니다. 취약점은 그 결과에 따라 공격자의 시간을 끌어당기며, 그 결과는 이후의 모든 움직임에 영향을 미칩니다.

공격자들은 취약점을 공격의 시작점으로 여깁니다. 그들은 일련의 예측 가능한 단계를 거칩니다. 즉, 결함을 찾아내고, 자신들이 제어하는 코드를 실행하고, 시스템을 장악한 다음, 거기서부터 확산해 나가는 것입니다. 이제 그들은 기계 속도로 그 과정을 처리하고 있으며, 자동화는 최초의 공격과 네트워크 전체에 걸친 문제 발생 사이의 격차를 계속해서 줄여나가고 있습니다.  

공격자의 관점에서 첫 번째 취약점부터 최종 목표까지 공격 과정을 추적할 수 있으므로 수비자는 어디를 뚫어야 할지 파악할 수 있습니다.

공격자가 공격에 성공하면 무엇을 얻을 수 있을까요?

취약점은 크게 세 가지 유형으로 나뉩니다. 결함은 코드 자체에 있을 수도 있고, 시스템 설정 방식에 있을 수도 있고, 사용자 신원 및 관리 계층에 있을 수도 있습니다. 어떤 유형으로 시작하든, 성공적인 공격은 하나 이상의 결과로 이어지는 경향이 있습니다.

  • 임의 코드 실행(ACE). 공격자가 취약한 애플리케이션의 정상적인 프로그램 흐름에 접근할 수 있게 되는 성공적인 공격. 그런 다음 공격자는 애플리케이션의 원래 코드가 아닌 공격자 자신의 코드가 실행되도록 흐름을 변경합니다. 원격 코드 실행(RCE)은 ACE의 하위 개념으로, 동일한 공격이 네트워크를 통해 실행되는 것을 의미합니다.
  • 특권의 증대(EoP). 이를 통해 공격자는 원래 접근 권한보다 더 높은 권한을 획득할 수 있습니다. 예를 들어, 공격자는 권한 상승(EoP)을 이용하여 일반 사용자 계정에서 관리자 계정으로 이동합니다. Mimikatz와 같은 인기 있는 도구는 권한 상승을 가능하게 합니다.
  • 정보 공개(ID). 공격자가 볼 수 없어야 하는 정보, 종종 민감한 개인 데이터나 시스템 보안 방식에 대한 세부 정보를 얻을 수 있게 해주는 취약점입니다.
  • 보안 기능 우회. 시스템이나 소프트웨어 패키지의 민감한 부분에 대한 접근을 차단하는 보안 장치를 우회하는 공격 방식입니다.

공격자에게 있어 취약점과 그 악용은 단지 목적 달성을 위한 수단일 뿐입니다. 즉, 침입 을 시작하고 발판을 마련하는 방법입니다.

기술적인 중간 단계에서 이 점을 명심하십시오. 공격 실행 이후의 모든 단계는 네트워크 연결을 사용하며, 방어자는 어떤 연결을 유지할지 결정할 수 있습니다.

공격자는 취약점을 어떻게 이용하여 침입을 시작할까요?

공격자는 버퍼 오버플로와 같은 취약점을 이용하여 메모리에 악용 코드를 주입하려고 시도할 것입니다. 이를 통해 공격자는 정상적인 프로그램 흐름을 셸코드라고도 하는 공격자의 악성 코드로 전환할 수 있습니다.

이제 공격자의 악성 코드(셸코드)가 시스템을 장악하여 초기 발판을 마련하고 명령 및 제어(C&C 또는 C2) 환경을 구축합니다. 이 시점에서 공격자는 침입을 성공적으로 시작했습니다.

각 단계는 전체 공격 과정에서 매우 중요한 역할을 합니다.

  1. 취약점 발견. 이는 시스템이나 소프트웨어의 제작 방식 또는 사용 방식에서 약점을 찾아내는 과정입니다. 여기에는 리버스 엔지니어링, 퍼징, 코드 분석(정적 및 동적) 또는 종속성 분석이 포함될 수 있습니다. ‍
  2. 취약한 프로그램을 악용하세요. 익스플로잇은 취약점을 성공적으로 악용하는 저수준 또는 네이티브 코드 조각입니다. 여기에는 임의 코드 실행(ACE), 우회, 권한 상승(EoP) 또는 정보 유출(ID)로 이어지는 공격이 포함될 수 있습니다. ‍
  3. 셸코드. 셸코드는 실행 중인 프로그램의 정상적인 흐름을 가로채어 메모리에서 실행 중인 공격자의 악성 코드로 흐름을 전환하려는 특수하게 제작된 저수준 악성 코드입니다. 여기에는 버퍼 오버플로, 힙 스프레이, VTable 하이재킹 또는 반환 지향 프로그래밍(ROP)이 포함될 수 있습니다. ‍
  4. 뒤집은 껍질. 리버스 셸은 공격자의 리스너 인프라로 연결을 시도하여 취약한 프로그램이나 시스템에 무단으로 접근합니다. 여기에는 명령 프롬프트(cmd), 추가 익스플로잇을 다운로드하기 위한 bash 스크립트, 그리고 권한 상승과 같은 더욱 강력한 페이로드가 포함될 수 있습니다. ‍
  5. 악성코드 페이로드. 악성코드 페이로드는 초기 침투 지점을 넘어 공격을 더욱 진행시키는, 정교하게 제작된 악성 실행 파일 또는 익스플로잇입니다. 악성코드가 감염된 시스템에서 제공하는 기능과 동작은 일반적으로 크기가 작은 셸코드가 제공하도록 설계된 범위를 훨씬 뛰어넘습니다. 여기에는 로컬 권한 상승 취약점을 이용한 다단계 공격 과 웜처럼 측면 이동을 위한 악성코드 유포가 포함될 수 있습니다.

위의 2~4단계는 모두 메모리에서 일어납니다. 공격자는 취약한 프로그램을 악용하여 셸코드를 사용하여 제어 흐름을 장악하고 리버스 셸을 실행합니다. 프로세스(실행 중인 실행 파일)의 가상 메모리 구조를 사용하여 이를 분석할 수 있습니다. 해당 구조는 스택, 힙, 데이터, BSS 및 텍스트 섹션의 다섯 가지 핵심 부분으로 구성됩니다.  

메모리 레이아웃 다이어그램은 주소 공간을 낮은 주소에서 높은 주소 순으로 보여줍니다. 낮은 주소에는 프로그램 코드가 있는 텍스트 섹션이 있고, 그 다음에는 초기화된 데이터가 있는 데이터 섹션, 그리고 마지막으로 초기화되지 않은 데이터가 있는 BSS 섹션이 있습니다. 그 위에는 위로 쌓이는 더미가 있고, 맨 위에는 아래로 쌓이는 스택이 있습니다. 힙과 스택 사이에는 사용 가능한 주소 공간이 있습니다.

특히 스택 섹션이 흥미로울 것입니다. 2부에서는 이러한 메모리 영역을 자세히 살펴보고, 다음 공격 기법 중 하나를 예로 들어 설명하겠습니다.

취약점 악용을 위한 주요 기술

주요 공격 기법에는 다음과 같은 것들이 있습니다.

  • 해킹당한 계정을 대상으로 하는신원 기반 공격. ‍
  • 프로그래밍 논리의 서로 다른 결함을 이용하여 악용 가능한 취약점을 만들어내는 논리 결함 공격. ‍
  • 버퍼 오버플로 는 버퍼가 초과되어 반환 주소가 덮어쓰여지는 현상입니다. ‍
  • 힙 스프레이 공격은 실행 가능한 악성 코드를 힙에 무분별하게 뿌려(스프레이처럼) 공격이 성공한 후 해당 코드가 실행될 가능성을 높이는 공격입니다. 힙 스프레이는 주소 공간 레이아웃 무작위화(ASLR) 메모리 보호 기능을 무력화하려는 시도입니다.

일단 위협 행위자가 취약점을 악용하여 초기 발판을 마련하면, 예측 가능한 전략의 절반을 이미 달성한 셈입니다. 이제 그들은 그 접근 권한을 이용하여 기기에서 기기로 공격을 전환하고, 공격을 확산시키고, 목표를 달성해야 합니다.

공격자는 취약점을 이용하여 어떻게 침해를 확산시키는가?

공격 확산 단계는 좀 더 익숙한 양상을 띱니다. 이는 일반적으로 MITRE ATT&CK 프레임워크의 전술 및 기법 후반부를 따릅니다. 이 네 단계는 앞의 다섯 단계에 이어지는 내용으로, 총 아홉 단계입니다.

  • 발견. 발견이란 그들이 도달한 시스템과 그 시스템이 연결되는 네트워크에 대해 더 자세히 알아보는 것을 의미합니다. 여기에는 계정 검색, 네트워크 정보, 브라우저 검색 및 클라우드 인프라 검색이 포함될 수 있습니다. ‍
  • 측면 이동. 측면 이동이란 원격 시스템에 연결하고 이를 장악하여 네트워크를 통해 확산하는 것을 의미합니다. 여기에는 RDP/SSH 하이재킹, 관리자 공유, SMB, 패스 더 해시, 소프트웨어 배포 도구 및 로컬 환경 악용 기법이 포함될 수 있습니다. ‍
  • 명령 및 통제. 명령 및 제어는 공격자가 자체 리스너 인프라를 통해 감염된 시스템과 통신하고 제어하는 방식입니다. 여기에는 역방향 셸 채널, 웹 채널, 도메인 생성 알고리즘(DGA), DNS 텍스트 채널 및 도메인 프론팅(CDN)이 포함될 수 있습니다.
  • 목표. 목표는 공격의 최종 목표입니다. 여기에는 데이터 도난 또는 유출(pyexfil 또는 icmpexfil), 랜섬웨어, 서비스 거부 공격 또는 봇넷이 포함될 수 있습니다.

침해 확산을 위한 주요 기술

공격자들은 확산을 위해 특별한 도구를 거의 필요로 하지 않습니다. 관리자가 시스템을 관리하고 팀이 파일을 공유하는 데 사용하는 동일한 경로가 기기 간 보안 침해의 통로가 되기도 합니다.

  • 관리 포트 및 프로토콜. RDP, SSH 및 WinRM은 공격자에게 IT 팀과 동일한 원격 제어 권한을 제공합니다.
  • 파일 및 폴더 공유. SMB 공유는 문서를 옮기는 것처럼 쉽게 악성코드를 옮깁니다.
  • 수단. WMI와 같은 도구를 사용하면 공격자는 새 파일을 하나도 생성하지 않고 원격 시스템에서 명령을 실행할 수 있습니다.
  • 웹 기반 채널. HTTP 및 DNS 트래픽은 명령 및 제어가 일반적인 웹 브라우징 활동 속에 숨어들 수 있도록 합니다.

취약점보다 공격 흐름이 더 중요한 이유

새로운 취약점은 어떤 팀도 패치할 수 없을 만큼 빠르게 나타나며, 가장 큰 피해를 주는 취약점은 점수가 가장 높은 경우가 드뭅니다. 피해 규모를 결정하는 것은 공격이 성공한 후 발생하는 모든 일, 즉 공격자가 얼마나 멀리 이동할 수 있는지, 얼마나 많은 시스템에 접근할 수 있는지, 그리고 얼마나 오랫동안 공격할 수 있는지입니다.

이는 수비수들에게 좋은 소식입니다. 왜냐하면 공격 확산 단계는 예측 가능한 부분이기 때문입니다. 탐색, 측면 이동, 지휘 및 통제, 그리고 최종 목표 달성은 모두 대부분의 네트워크가 기본적으로 허용하는 시스템 간 연결에 달려 있습니다.  그 통로들을 막으면 발판은 영원히 발판으로 남게 된다. 세분화, 관리 포트 및 프로토콜에 대한 엄격한 제어, 그리고 워크로드 간 통신 방식에 대한 명확한 가시성을 통해 9단계 프로세스를 5단계에서 종료할 수 있습니다.

주차장에 있는 차를 기억하세요. 도둑이 중요했던 이유는 문 하나가 열렸기 때문이다. 분할은 하나의 잠금장치가 고장 나더라도 다른 모든 문은 잠겨 있도록 유지하는 방법입니다.

이제 공격자들은 이 전체 과정을 자동화하여 기계 속도로 실행합니다. 탐지 및 대응은 여전히 중요하며, 폭발 반경이 작을수록 효과가 가장 좋습니다. 침입 지점에서 침투를 차단하는 것이 보안팀이 조치를 취할 시간을 벌어주는 핵심입니다.

2부에서는 메모리 공격에 대해 더 자세히 살펴보고, 특수하게 조작된 문자열과 입력값이 공격에 어떻게 작용하는지, 그리고 방어자들이 이를 막기 위해 사용할 수 있는 기술에 대해 알아보겠습니다.

Illumio Segmentation 체험하기 측면 이동 경로를 차단하고 침입 지점에서 침입을 막는 방법을 알아보세요.

관련 문서

지금 일루미오 인사이트 체험하기

AI 기반 관찰 가능성을 통해 위협을 더 빠르게 탐지, 이해, 차단하는 방법을 알아보세요.