웹쉘 파일 추적
    • PDF

    웹쉘 파일 추적

    • PDF

    기사 요약

    VPC 환경에서 이용 가능합니다.

    웹쉘 침해 사고 발생 시 웹쉘 파일을 찾을 때 다음의 내용을 참고하십시오.

    콘솔에서 의심 파일을 확인할 수 있는 경우
    탐지된 웹쉘 행위와 함께 수집된 웹쉘 의심 파일 목록은 웹쉘 행위가 발생한 시점에 다양한 조건들을 바탕으로 도출해낸 목록입니다. 웹쉘 행위가 발생한 시점에 접근 이력이 존재하는 파일, 파일 생성 시간, 파일 소유자 등 다양한 조건들을 비교하여 가중치를 계산하여 제공합니다. 의심 파일 목록 중 웹쉘 파일이 있을 가능성이 비교적 높기 때문에 우선적으로 확인한다면 빠른 대응이 가능할 수 있습니다.

    콘솔에서 의심 파일을 확인할 수 없는 경우
    서버 환경 또는 상황에 따라 콘솔에서 의심 파일 목록을 확인할 수 없는 경우가 있습니다. 이런 경우 웹쉘 행위가 탐지된 시간을 참고하여 WAS의 Access Log에서 웹쉘 의심 파일들을 찾을 수 있습니다. 다음과 같은 조건을 참고하십시오.

    • 웹쉘이 탐지된 시점에 접근한 파일들을 웹쉘로 의심해볼 수 있습니다.
    • 접근한 파일의 확장자가 WAS에서 실행 가능한 확장자이나 의도하지 않은 파일일 경우 웹쉘일 가능성이 있습니다.
    • 업로드될 수 있는 경로에 존재하는 파일에 접근한 이력이 있다면 웹쉘로 의심해볼 수 있습니다.
    • 웹쉘이 실행한 명령어가 URL 쿼리 스트링(Query String)에 남아 있는 경우 웹쉘로 의심해볼 수 있습니다.
      예시: webshell.php?cmd=cat%20/etc/hosts

    파일의 확장자가 서버에서 실행할 수 있는 확장자인지 확인
    WAS에서 실행하도록 인식되는 확장자(.php, .jsp 등)일 경우 웹쉘일 가능성이 있습니다.

    서비스에 따라 또는 해커에 의해 일반적으로 WAS에서 실행하지 않는 확장자일 경우에도 설정을 통해 실행되는 경우가 있습니다. 서버 설정을 확인하여 WAS에서 실행하도록 인식되는 확장자를 파악한 후 확인해야 합니다.

    .ppp 확장자를 php로 인식하도록 설정한 예시:

    AddType application/x-httpd-php .php .ppp
    

    서비스를 위해 개발한 파일인지 확인
    파일 이름, 생성 일자 등을 참고하여 서비스를 위해 개발한 정상 파일인지 확인하십시오. 고객이 생성한 파일이 아니라면 웹쉘일 가능성이 있습니다.

    고객이 생성한 파일이더라도 생성 일자나 수정 일자, 파일 내용을 확인했을 때 변조된 흔적이 발견된다면 웹쉘일 가능성이 있습니다.

    파일 소유자 확인
    일반적으로 웹쉘은 웹 서비스의 취약점을 통해 업로드 또는 생성되는 경우가 많기 때문에 웹쉘 파일의 소유자는 웹 서비스 실행 권한과 동일한 경우가 많습니다.

    참고

    웹쉘 파일 소유자 및 권한 예시:

    • httpd 프로세스가 nobody로 실행되고 있는 경우 웹쉘 파일의 소유자는 nobody
    • WAS 프로세스가 apache로 실행되고 있는 경우 웹쉘 파일의 소유자는 apache
    • WAS 프로세스가 root로 실행되고 있는 경우 웹쉘 파일의 소유자는 root

    파일의 소유자가 WAS 프로세스 실행 권한과 동일하다면, 웹 서비스에 의해 생성된 파일일 가능성이 있습니다. 이런 파일은 고객이 직접 생성한 파일이 아닐 수 있으므로 웹쉘일 가능성이 높습니다.

    파일 생성 일자 확인
    파일 생성 일자가 웹쉘 행위가 발생한 시기와 가깝다면 웹쉘일 가능성이 있습니다. 오래 전에 생성된 파일이더라도 웹쉘일 가능성이 있으므로 다음 상황을 참고하여 확인하십시오.

    • 오래 전에 업로드되어 지속적으로 공격해왔으나 최근에 이를 탐지한 경우
    • 오래 전에 업로드되었으나 새로운 공격자가 이를 발견/접근하여 공격에 사용한 경우

    파일이 서버 사이드 스크립트로 작성되었는지 확인
    파일 내용이 서버 사이드 스크립트로 작성되었을 경우 웹쉘일 가능성이 있으며, 서버에서 구동 중인 WAS에 의해 실행될 수 있는 언어일 경우 가능성이 높아집니다.
    파일 내용을 확인할 때에는 의심 파일이 실행되지 않도록 파일 편집기를 통해 확인하십시오.

    업로드 디렉터리 등 의도하지 않은 경로에 서버 사이드 스크립트로 작성된 파일이 존재할 경우 웹쉘일 가능성이 있습니다.

    파일 내용이 웹쉘에서 주로 사용하는 패턴인지 확인
    일반적인 웹쉘은 웹 서비스를 통해 공격자의 명령을 받아 시스템 명령어를 실행하도록 구성되어 있습니다. 이 때 시스템 명령어를 실행할 수 있는 함수들이 사용되기 때문에 해당 함수들이 존재할 경우 웹쉘일 가능성이 존재합니다.

    참고

    시스템 명령어를 실행할 수 있는 함수 또는 코드 실행 및 난독화 시 사용되는 함수 예시:

    Runtime.getRuntime().exec()
    shell_exec, passthru, system, exec, popen
    eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13, ...
    

    공격자의 명령을 받지 않고 랜섬웨어 등 악의적인 행위를 하는 웹쉘일 경우에는 시스템 명령어를 실행할 수 있는 함수가 존재하지 않을 수 있습니다. 또한, 웹쉘을 분석하기 힘들도록 공격자가 파일 내용을 난독화하거나 통신을 암호화한 경우도 있습니다.
    security-17-192_ko

    이런 경우 직접 분석이 어려울 수 있기 때문에 전문가에게 의뢰하거나 위에서 소개한 다양한 방법들을 대응에 참고할 수 있습니다.

    웹 서비스를 제공하기 위해 고객이 생성한 파일이 아닌 것이 확실하며 웹 서비스에 불필요한 파일이고, 웹쉘로 의심되는 근거가 충분하다고 생각할 경우 웹쉘로 간주하고 대응할 수 있습니다.

    주의

    웹 서비스를 통해 웹쉘에 접근하여 웹쉘 여부를 확인하는 방법도 있으나, 공격자가 어떤 장치를 해두었을지 알 수 없기 때문에 주의가 필요하며, 이 방법은 권장하지 않습니다.
    예시: 공격자가 아닌 사람이 접근할 경우 분석 및 추적이 어렵도록 웹쉘 파일 삭제 또는 서버 파일/DB 삭제


    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.