웹쉘(WebShell)은 기본적으로 인코딩 및 난독화가 적용되어 있다. 평문으로 된 웹쉘은 웹쉘 탐지 솔루션에 의해 탐지되어 웹 상에 정상적으로 실행되지 않는다. 이런 웹쉘 탐지 솔루션을 우회하기 위해 수 많은 웹쉘이 난독화를 적용한다.


아주 기본적인 인코딩 및 난독화가 적용되어 있는 웹쉘인 b374k v2.7로 평문의 코드를 얻는 방법을 알아본다.


b374k-2.7.php 코드를 보면 상단부터 웹쉘 접속 로그인 정보, eval(), gzinflate(), base64_decode() 함수가 존재한다.

 

base64_decode() 함수 내의 코드는 Base64 인코딩 되어 있는 문자열이므로 해당 문자열을 디코딩하면 원본 코드가 나온다.



b374k() 함수의 첫 번째 인자를 복사하여 base64_decode() 함수의 인자에 붙여 넣는다.



UnPHP 사이트는 PHP 기반의 난독화 또는 악의적인 코드를 분석해주는 온라인 PHP 디코더 서비스이다. 해당 사이트로 접속하여 '<?php', '?>'을 제외한 코드 eval(gzinflate(base64_decode(""))) 를 붙여 넣고, 'Decode This PHP' 버튼을 클릭한다.


▶ UnPHP 사이트



온라인 분석이 완료되면 상단에 디코딩 된 코드가 존재하고, 하단에 붙여넣은 원본 코드가 존재한다. 디코딩이 완료되면 상단에는 디코딩 된 코드, 하단에는 원본 코드가 존재한다.



제대로 난독화가 해제 되었는지 난독화가 적용되지 않는 순정 코드와 비교해보니 순정 코드와 유사하게 변경됐다. 이런 사이트를 이용하지 않고, Base64 인코딩 된 값을 디코딩해도 동일한 효과를 가진다.



▶ 안드로이드 암호화 구현 취약점 (Android AES 복호화)

▶ 안드로이드 디컴파일 방법 및 jadx 사용법

▶ 스크립트 난독화 및 암호화 (bash obfuscate)

▶ 안드로이드 난독화 (코드 보호 기법)

▶ 파워쉘 난독화 (Powershell)

▶ XSS htmlspecialchars 함수 우회

  • 카카오톡-공유
  • 네이버-블로그-공유
  • 네이버-밴드-공유
  • 페이스북-공유
  • 트위터-공유
  • 카카오스토리-공유