Python으로 만들어진 악성 코드가 등장

인터넷의 보급과 함께 컴퓨터와 스마트폰은 일상 생활에 빼놓을 수없는 것으로 되었지만, 그러한 장치에 저장된 기밀 데이터를 대상으로 한 악성 코드의 위협도 폭발적으로 늘어나고있다.



그 악성 코드 프로그래밍에 사용되는 언어로 "Python"이 대두하고 있다고, 미국 사이버 사령부에 근무 한 경험이 있는 오스틴 잭슨 씨가 말하고있다.


지난 30년 동안, 악성 코드의 개발 환경은 C언어나 C++, Delphi와 같은 컴파일러 형 언어가 주류를 이루었지만, 최근에는 Python 등의 인터프리터 언어에 의한 악성 코드가 증가하고 있다는 것. 특히 Python 프로그래밍은 초보자 친화적이고 쉽게 개발할 수 있고, 라이브러리가 충실하기 때문에, 악성 코드 개발자의 주목을 받고 있다고 잭슨 씨는 말하고있다.


컴파일러 된 언어에 의한 악성 코드와는 달리, Python의 코드를 실행하기 위해서는 실행 환경을 OS에 설치해야한다. 그러나 Pyinstaller나 py2exe, Nuitka와 같은 도구를 이용하면, Python을 실행 파일로 변환 할 수있다. 또한, C 언어에 의한 악성 코드보다 Python에 의한 악성 코드의 것이 프로그램의 크기와 자원 소비가 증가하기 쉽지만, 인터넷 회선의 속도나 컴퓨터 사양의 진화 등에 의해, 최근에는 프로그램 크기가 장벽으로 여겨지게 어렵게되어있다.





악성 코드 개발에서 가장 많이 사용되는 라이브러리로, Pyminifier 또는 pyarmor가 있다는 것. 이러한 라이브러리를 사용하면, 인간이 이해할 수없을 것처럼 가공 된 난독화 코드로 코드를 변환 할 수 있다.


그 밖에도 스크린 샷을 촬영할 수있는 Python MSS를 사용하여 민감한 데이터를 추출하거나, 웹 요청을 할 수있는 라이브러리를 사용하여 C2 서버에 데이터를 전송할 수있다. 또한 문자열을 Python 코드로 수행 할 수있는 eval 함수도, 악성 코드를 프로그래밍하는 목적으로는 매우 강력하다고 잭슨 씨는 말한다.




Python으로 작성된 악성 코드로 유명한 것이 "SeaDuke"라고 말하는 잭슨 씨. SeaDuke는 사이버 스파이 조직 "The Dukes"에 의한 Python 제 맬웨어로, 팔로 알토 네트웍스의 대 사이버 위협 조직 "Unit 42"에 의해 디 컴파일 등의 분석이 이루어졌다.


분석 결과, SeaDuke는 PyInstaller를 사용하여 코드를 Windows 실행 파일로 변환 후, UPX로 압축이 이루어지고 있었다는 것. 소스 코드는 난독화되어 있었으며, Windows 뿐만 아니라 Linux에서도 작동하는 크로스 플랫폼 악성 코드였다.



디바이스의 파일을 암호화하고 몸값을 요구하는 "랜섬웨어"에도 Python으로 만들어진 프로그램이 존재한다. "PyLocky"는, 안티 샌드 박스 기능과 3DES에 의한 파일의 암호화 기능을 탑재하고 있으며, 트렌드 마이크로에 의해 분석 결과가 보고되고있다. 그 밖에도 주로 유럽에서 관측 된 PWOBot과 아제르바이잔의 기업 및 공공 기관을 대상으로하는 PoetRAT, 또한 GitHub에 소스 코드가 공개되어있는 Pupy와 Stitch와 같은 오픈 소스의 Python제 악성 코드도 존재한다.


이러한 Python제 악성 코드를 분석하기위한 도구도 존재한다. uncompyle6이나 python-exe-unpacker 등의 도구를 사용하면, 컴파일 된 바이너리 코드를 Python의 소스 코드를 디 컴파일 할 수 있다는 것.


잭슨 씨는, "컴퓨터 시스템이 고속화하고, 간편한 조작으로 되어가는 가운데, 악성 코드의 트렌드가 변화하는 것을 관찰하는 것은 매우 흥미롭습니다. 또한 보안 업계로서는, Python으로 만들어진 악성 코드를 경계 할 필요가 있습니다"라고 말하고있다.