상세 컨텐츠

본문 제목

PHP 서버 모듈에 숨길 수 있는 서버를 점령 가능한 PHP 루트킷 발견

국내외 보안동향

by 알약(Alyac) 2017. 6. 20. 10:28

본문

With this PHP rootkit you can take over a server hiding it in PHP server modules


최근 네덜란드의 한 개발자는, 공격자들이 PHP웹서버를 점령하는데 사용할 수 있는 PHP루트킷을 개발했습니다. 이 루트킷은 PHP 서버 모듈에 숨어 악성행위를 하게됩니다. 


기존의 루트킷들은 OS의 가장 낮은 레벨에서 동작하며 악성행위를 위해 커널 작업 작업에 인터셉트하지만, 이번에 새로히 개발된 루트킷은 OS커널대신 PHP 인터프리터와 상호작용을 합니다. 


루트킷을 PHP 모듈로 작성하면 접근성이 향상될 뿐만 아니라, Zend Engine을 사용하는 방법을 배우는 것은 커널 모듈을 쓰는 것을 배우는 것 보다 훨씬 쉬운 장점이 있습니다. 또한 코드베이스 자체가 작고, 문서화가 잘 되어있으며 훨씬 덜 복잡한 것도 특징입니다. 그렇기 때문에 자세한 문서나 튜토리얼이 없이도, 단 하루만에 PHP 모듈을 작성하는 기본 사항들을 배울 수 있습니다. 


이 루트킷을 개발한 개발자는 PHP 루트킷은 공격자들이 해킹한 서버에서 탐지되지 않고 지속될 수 있도록 한다고 밝혔습니다. 또한 PHP 모듈을 사용하여 루트킷을 효과적으로 숨길 수 있는 이유는 다음과 같다고 밝혔습니다. 


접근성: 루트킷을 PHP 모듈로 작성하는 것은 커널 모듈을 작성하는 것을 배우는 것 보다 훨씬 쉽습니다. 개발자들은 코드의 작은 일부분만을 사용할 수 있으며, 빠른 시간 내에 PHP모듈을 작성하는 기본적인 방법을 배우는 것이 가능합니다.


안정성: 루트킷은 커널 공간에서 실행되도록 설계되었기 때문에, 잘못 작성 된 악성코드는 전체 시스템을 손상시킬 수 있습니다. 하지만 PHP 루트킷은 잘못 작성되더라도 전체 시스템을 손상시키지 않습니다. 


탐지: PHP 모듈들에 대한 검사가 충분히 이루어지지 않기 때문에, PHP 루트킷은 탐지가 어렵습니다. 게다가, 커널 루트킷은 모든 프로세스에 시스템 호출들을 연결해야 하기 때문에, 기기가 저히 느려질 수 있어 더욱 사용자의 의심을 불러 일으킬 가능성이 높습니다.


이식성(Portability): PHP 루트킷들은 크로스 플랫폼 루트킷입니다. 대부분의 경우 PHP는 플랫폼으로부터 독립적이기 때문입니다. 이 개발자는 Github에 루트킷 PoC를 공개했는데,  이 PoC 코드는 PHP 서버의 “hash” 및 “sha1” 함수와 연결 되어 있으며, 루트킷은 단 80줄의 코드로 작성 되어 있기 때문에, 해커들이 정식 모듈에 숨기기가 더욱 용이합니다.


하지만 이 개발자는 공격자가 코드를 사용하지 못하게 막기 위해, Paris는 코드의 일부분을 생략해 비전문적인 PHP 개발자들의 컴파일을 어렵게 했습니다. 


또한 이 포스팅에는 관리자들을 위한 권장사항들도 포함되어 있습니다. 


PHP를 설치 후 모듈 해시 목록을 유지하세요. 관리자들은 확장 디렉토리의 모든 파일을 해시하려고 시도하는 cron 작업을 사용해 현재의 해시와 이를 비교할 수 있습니다.


또한 사용자의 PHP 모듈의 SHA1 해시를 확인하는 Python 스크립트를 공개했습니다.






참고 : 

http://securityaffairs.co/wordpress/60175/hacking/php-rootkit.html

https://github.com/Paradoxis/PHP-Rootkit

https://blog.paradoxis.nl/your-interpreter-isnt-safe-anymore-the-php-module-rootkit-c7ca6a1a9af5



관련글 더보기

댓글 영역