“커널용 와이어샤크” 스트라토샤크, 시스템 호출 수준에서 클라우드 애플리케이션 분석
컨텐츠 정보
- 조회 804
본문
클라우드 애플리케이션 보안은 쉬우면서도 어렵다. 마이크로소프트 애저 같은 하이퍼스케일 서비스 업체가 테넌트 컴퓨팅 환경을 잠그고 서로 격리하는 데 중점을 두기 때문에 쉽다. 하지만 이런 서비스 업체의 정책으로 인해 애플리케이션을 보호하기 위해 사용하는 많은 도구를 배포하고 사용하기가 힘들기 때문에 어렵다.
컨테이너와 가상머신에서 코드를 실행하면 기본 하드웨어가 검사에서 숨겨지기 때문에 패킷을 캡처하고 원치 않는 동작을 조사하는 데 진단 도구를 사용할 수 없다. 모니터링 도구는 대부분 서비스 업체의 플랫폼에 내장되어 있지만, 보안팀에서 일반적으로 사용하는 전용 도구와 같은 기능은 제공하지 않는다.
패킷 캡처에서 시스템 호출 캡처까지
패킷 캡처는 네트워크 어댑터를 통해 트래픽을 캡처한 다음 분석하는 핵심 기술 중 하나다. 이 분야에서 가장 친숙한 도구는 아마도 IP 패킷의 시퀀스를 캡처한 다음 디코딩하는 와이어샤크(Wireshark)일 것이다. 노이즈에서 신호를 추출하고, 특정 주소로의 호출을 찾아내고, 관련 패킷의 내용을 분석할 수 있다.
숙련된 보안팀은 와이어샤크를 사용해 알 수 없는 DNS 서버로 전송된 DNS 요청 패킷의 내용을 추적하고 네트워크 내부의 APT에 의한 DNS 터널링 공격의 징후를 찾는 등 공격과 데이터 유출을 발견할 수 있다. 하지만 클라우드 애플리케이션의 기본 패킷에 접근할 수 없다면, 기존 방법으로는 탐지할 수 없는 복잡한 공격의 흔적을 어떻게 찾아야 할까?
운영체제 수준에서 시스템 호출을 조사하는 eBPF와 같은 도구를 사용해 필요한 정보 중 일부를 얻는 방법이 있다. 애저 쿠버네티스 서비스(AKS)는 자체 및 서드파티 도구에 대한 eBPF 지원을 제공하며, 애저 컨테이너 네트워킹 인터페이스에서 실리움(Cilium) 같은 클라우드 네이티브 보안 도구에 대한 지원을 추가한다. 시스템 호출 캡처에는 많은 정보가 있지만, 필요한 결과를 얻으려면 분석 도구가 필요하다.
도구도 좋지만 애플리케이션이 어떻게 작동하는지 파악하기 위해 보안, 샘플링 트래픽 및 운영에 대한 보다 임시적인 접근 방식이 여전히 필요하다. Sysdig는 이미 AKS에서 팔코(Falco) 도구로 이런 서비스 중 일부를 사용하고 있다. 특히, 최근 팔코와 함께 제공되는 동일한 낮은 수준의 시스템 호출 캡처 에이전트를 기반으로 클라우드 서비스에 와이어샤크와 유사한 작업을 제공하는 것을 목표로 하는 새로운 도구를 출시했다.
“커널용 와이어샤크” 스트라토샤크의 이해
클라우드 플랫폼용으로 설계된 스트라토샤크(Stratoshark)는 애플리케이션에서 사용하는 시스템 호출의 시간 기반 캡처를 구축해 이벤트 유형별로 분류하고 결과 호출의 방향(인/아웃)을 보여주는 새로운 도구로, Sysdig 도구와 함께 작동한다.
와이어샤크를 사용해 본 적이 있다면 스트라토샤크의 인터페이스는 낯설지 않을 것이다. 캡처의 3개 창 보기가 동일하다. 화면 상단에는 캡처하는 동안 이루어진 호출의 타임라인이 표시되고, 각 호출을 클릭하면 아래쪽 두 프레임에 이벤트에 대한 분석과 호출 내용이 16진수 및 ASCII로 표시된다. 이를 통해 시스템에서 일어나는 일을 탐색하고 특정 프로세스 및 컨테이너의 효과를 확인할 수 있다.
여기서 마지막 사항이 중요하다. 프로세스 이름, PID 또는 호스트 컨테이너를 기준으로 필터링할 수 있다. 컨테이너별로 필터링하면 특정 컨테이너에 대한 특정 작업을 추적할 수 있어 쿠버네티스 또는 이와 유사한 플랫폼 내부에서 어떤 일이 일어나고 있는지 이해하는 데 도움이 된다. 이를 통해 문제가 버그의 결과인지 아니면 손상된 자산의 결과인지 확인할 수 있다.
스트라토샤크 빌드하기
스토라토샤크는 초보자를 위한 도구가 아니다. 우선, 맥OS와 윈도우 캡처 분석 클라이언트가 있긴 하지만 필요한 데이터를 캡처하려면 도구를 설치해야 한다. 데이터를 캡처하는 경우, 초기 릴리스는 선택한 리눅스 VM에서 실행되도록 컴파일해야 하는 리눅스 도구이다.
컴파일 타임 옵션이기 때문에 스트라토샤크를 빌드하려면 와이어샤크 소스와 도구가 필요하다. 두 도구는 사용자 인터페이스와 공통 검색 프레임워크를 공유하므로 당연한 조건이다. 주요 차이점은 데이터를 캡처하는 방식이다. 스트라토샤크를 설치하려면 몇 가지 팔코 구성 요소가 필요하다. 이 구성 요소는 깃랩과 깃허브에서 다운로드할 수 있다.
필자의 경우, 처음에 WSL(Windows Subsystem for Linux)에서 빌드를 선택했을 때 팔코 라이브러리를 컴파일하는 과정에서 오류가 발생해 빌드를 작동시키는 데 시간이 좀 걸렸다. WSL2 우분투 릴리즈에는 필요한 리눅스 헤더와 도구가 포함되어 있지 않으며, 사용자 지정 커널을 컴파일하지 않으면 사용할 수 없다. 마이크로소프트 서피스 상에서 리눅스를 실행하는 데 필요한 사용자 지정 커널도 마찬가지지만 여기에는 다른 도구 세트가 누락되어 있다.
결국, 필자는 새로 우분투 가상머신을 설정하고 그 위에 메이크 및 빌드 프로세스를 실행했다. 와이어샤크와 팔코 모두 성공적으로 컴파일된 후, 컴파일러 플래그를 설정하여 스트라토샤크 RC 버전을 빌드할 수 있었다. 이 과정은 비교적 빠르게 진행됐고, 바로 스트라토샤크를 실행할 수 있었다. 애저는 여러 가지 리눅스 배포판을 지원하므로, 팔코 프로브용 eBPF 드라이버를 포함해 캡처 도구와 스트라토샤크의 자체 버전을 모두 컴파일해야 할 가능성이 높다.
커널 모듈이나 권한 있는 액세스 없이도 커널 수준의 액세스를 얻을 수 있는 것이 이런 도구의 핵심이다. 그렇기 때문에 애저가 AKS와 같은 서비스에서 eBPF 프로브에 대한 액세스를 제공해 플랫폼 보안을 손상시키지 않고 코드에 대해 필요한 정보를 얻을 수 있도록 하는 것이 중요하다.
스트라토샤크를 사용해 애저 시스템 호출 분석하기
스트라토샤크를 실행하고 나면 익숙한 와이어샤크 사용자 인터페이스가 표시되지만, 새로운 옵션이 추가되어 있다. 와이어샤크와 마찬가지로, 스트라토샤크는 와이어샤크의 개발자가 “바닥 수준의 진실”이라고 부르는 것을 제공하도록 설계됐다. 시스템 호출을 캡처하면 코드가 언제 파일을 열고, 네트워크에 연결하고, 주요 시스템 라이브러리를 사용하는지 등을 확인할 수 있다.
현재는 리눅스만 지원하지만, 커뮤니티가 스트라토샤크를 중심으로 발전하기 시작하면 윈도우를 비롯한 다른 운영체제도 지원할 것이다. 리눅스에서 실행되는 애저 워크로드가 상당수이기 때문에 윈도우의 eBPF 지원이 도움이 되겠지만, 어쨌든 유용할 것이다.
캡처는 팔코의 libscap 및 libsinsp 도구와 SSH를 통한 명령줄 sysdig 도구를 사용해 수행된다. libscap은 모니터링되는 시스템에서 시스템 호출을 캡처하고 저장하며, libsinsp는 스트라토샤크와 같은 애플리케이션에서 사용할 수 있도록 이벤트 구문 분석, 필터링 및 출력 서식 지정 도구를 제공한다. 라이브러리 아래에는 커널 모듈(설치할 수 있는 위치)과 eBPF 프로브가 있다. 애저와 같은 클라우드 서비스에서는 자체 커널 모듈을 설치할 수 없다. 물론 사용자 정의 가상머신 빌드에서 서비스를 호스팅하는 경우가 아니라면 말이다.
개발자 제럴드 콤즈는 스트라토샤크가 와이어샤크의 기존 커뮤니티를 기반으로 더 많은 호출을 분석하는 코드와 더 넓은 범위의 필터를 제공해 클라우드 네이티브 코드에서 일어나는 일과 컨테이너 및 호스트가 클라우드 플랫폼 서비스 및 더 넓은 네트워크와 상호 작용하는 방식을 정확히 추적하는 데 도움이 될 것으로 기대하고 있다.
클라우드 네이티브 플랫폼 전반의 작업 추적
초기 릴리즈는 버전 0.9이며, 와이어샤크의 빌드와 동기화하기 위해 계획된 버전 번호 점프 전에 추가 릴리즈가 이어질 예정이다. 하지만 현재로서는 첫 번째 릴리스를 사용해 볼 가치가 충분하다. 주의할 것은 간단한 캡처에도 많은 양의 데이터가 포함된다는 것. 따라서 캡처에서 관심 지점을 빠르게 좁히기 위해 필터와 캡처 후 Lua 스크립트를 모두 사용하는 방법을 익혀두는 것이 좋다.
스트라토샤크는 클라우드 네이티브 플랫폼의 필수 진단 및 보안 분석 도구가 될 것으로 기대된다. 익숙하고 효과적인 방법으로 저수준 작업에 액세스할 수 있는 기능은 애저와 같은 플랫폼을 보호하고 최대한 활용하는 데 도움이 될 것이다. 기존 커뮤니티와 개방형 확장성 모델을 통해 개발자가 필요한 애저 전용 캡처, 탐지 및 필터를 얻는 데는 그리 오랜 시간이 걸리지 않을 것이다.
콤즈는 스트라토샤크가 와이어샤크와는 별개의 제품이라고 말한다. 콤즈는 “현재 와이어샤크를 보면 매우 성숙하고 유능한 애플리케이션이다. 사람들이 25년 넘게 기여해 왔기 때문에 기능에 관한 한 일종의 축적된 관심이라고 할 수 있다”고 말했다. 시스템 호출 분석 및 필터를 와이어샤크의 네트워킹 및 통신 기능과 함께 짜 넣는 대신 스트라토샤크로 분리하면 새로운 개발을 위한 그린필드가 생긴다.
새로운 그린필드는 현재 사용 중인 서비스를 위한 도구를 구축할 수 있기 때문에 중요하다. 애저에 대한 약간의 조정만 거치면, 특히 이미 와이어샤크에 익숙한 경우 스트라토샤크를 툴킷의 일부로 쉽게 사용할 수 있다. 팔코와 같은 도구는 클라우드 네이티브 코드에 대한 프로덕션 모니터링을 제공하며, 스트라토샤크는 개발, 테스트 및 보안에 이상적이다.
dl-itworldkorea@foundryco.com
관련자료
-
링크
-
이전
-
다음





