> For the complete documentation index, see [llms.txt](https://h08.gitbook.io/undefined/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://h08.gitbook.io/undefined/custom-rule-and-active-response/2./2.1.md).

# 2.1 웹쉘 명령어 실행 탐지

## 1. 개요

* 공격자가 업로드한 웹쉘을 통해 실제 시스템 명령어를 실행하는 시점을 포착하여 공격 행위를 탐지
* 웹 서버 계정(`www-data`)이 `id`, `whoami` 등 시스템 명령어를 실행할 때 발생하는 커널 이벤트를 감지

***

## 2. 룰

### 100520

```xml
<group name="auditd, linux, webshell,">
  <rule id="100520" level="12">
    <if_sid>80700</if_sid>
    <field name="audit.key">webshell_command_exec</field>
    <description>[Command execution ($(audit.exe))]: Possible web shell attack detected</description>
    <mitre>
      <id>T1505.003</id>
      <id>T1059.004</id>
    </mitre>
  </rule>
</group>
```

***

## 3. 환경설정

### 3.1 Manager

* 위 xml 탐지룰 설정

### 3.2 Agent

* Linux Auditd 설정 (/etc/audit/rules.d/)

  ```bash
  -a always,exit -F arch=b32 -S execve -F uid=33 -F key=webshell_command_exec
  -a always,exit -F arch=b64 -S execve -F uid=33 -F key=webshell_command_exec
  ```

  * `-S execve`: 명령어 실행 시 호출되는 시스템 콜(`execve`)을 감시
  * `-F uid=33`: 웹 서버 계정(`www-data`)이 수행하는 행위만 필터링하여 오탐을 최소화
  * `-key`: 로그에 태그를 부착하여 Wazuh 룰에서 식별 가능하게 함

* /var/ossec/etc/ossec.conf/

  ```xml
  <localfile>
    <location>/var/log/audit/audit.log</location>
    <log_format>audit</log_format>
  </localfile>
  ```

***

## 4. 작동 원리

1. 공격 실행

* 공격자가 업로드된 웹쉘에 접속하여 명령어를 입력

2. 시스템 콜 호출

* 웹쉘 프로세스는 리눅스 커널의 `execve` 시스템 콜을 사용하여 명령을 수행

3. Auditd 감지

* 미리 설정된 `audit.rules`에 의해 `uid=33` 사용자의 `execve` 호출이 감지
* `/var/log/audit/audit.log`에 해당 행위가 기록

4. Wazuh 경보

* Wazuh Agent가 로그를 수집하여 Server로 전송하고, 룰 매칭을 통해 대시보드에 경보를 띄운다

<figure><img src="https://3550524140-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMQqlpxjtA7kpPBgieO9x%2Fuploads%2FL4hCyERGHHhUyQA6Yx2H%2Fimage.png?alt=media&amp;token=82fe2b85-ba65-4f76-9e49-b9275209b680" alt=""><figcaption></figcaption></figure>

***

## 5. 트러블 슈팅

#### 자동 실행 명령어에 의한 다수 경보 발생

<figure><img src="https://3550524140-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMQqlpxjtA7kpPBgieO9x%2Fuploads%2FiMDMSvc1SMRoOdgucEbp%2Fimage.png?alt=media&amp;token=cb1d365a-e9ee-4d02-9662-0eaaa9eb7cfa" alt=""><figcaption></figcaption></figure>

* 현상 : 공격자가 별도의 명령어를 입력하지 않았음에도 `id`, `whoami` 명령어가 실행되었다는 알림이 다수 발생함
* 원인 분석

  <figure><img src="https://3550524140-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMQqlpxjtA7kpPBgieO9x%2Fuploads%2FYSY2htGdoiIdzxLGFnek%2Fimage.png?alt=media&amp;token=32af8ae1-30b8-4d47-8c0f-944820b8335a" alt=""><figcaption></figcaption></figure>

  * 테스트에 사용된 `b374kmini` 웹쉘의 소스 코드를 분석한 결과, 초기 구동 시 서버 환경 정보를 출력하기 위해 `id`, `whoami` 등의 명령어를 자동으로 실행하는 로직이 포함되어 있음을 확인
* 결과
  * 해당 현상은 오탐이 아니며, 웹쉘이 정상적으로 작동하여 수행한 자동 명령어를 룰이 정확히 탐지한 것으로 검증 완료
