> 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/1./1.2-fim.md).

# 1.2 웹쉘 업로드 및 변조 탐지 (FIM)

## 1. 개요

* 파일 업로드 취약점을 이용하여 웹쉘이 업로드, 수정 되는 것을 탐지한다

***

## 2. 룰&#x20;

### 100500 / 100501

```
<group name="linux, webshell, windows,">
  <rule id="100500" level="12">
    <if_sid>554</if_sid>
    <field name="file" type="pcre2">(?i)\.php$|\.phtml$|\.php3$|\.php4$|\.php5$|\.phps$|\.phar$|\.asp$|\.aspx$|\.jsp$|\.cshtml$|\.vbhtml$</field>
    <description>[File creation]: Possible web shell scripting file ($(file)) created</description>
    <mitre>
      <id>T1105</id>
      <id>T1505</id>
    </mitre>
  </rule>
</group>
```

```
<rule id="100501" level="12">
  <if_sid>550</if_sid>
  <field name="file" type="pcre2">(?i)\.php$|\.phtml$|\.php3$|\.php4$|\.php5$|\.phps$|\.phar$|\.asp$|\.aspx$|\.jsp$|\.cshtml$|\.vbhtml$</field>
  <description>[File modification]: Possible web shell script modified in $(file)</description>
  <mitre>
    <id>T1105</id>
    <id>T1505</id>
  </mitre>
</rule>
```

***

## 3. 환경 설정

### 3.1 Manager

* 위 xml 탐지룰 설정

### 3.2 Agent

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

  ```
  <directories realtime="yes" check_all="yes" report_changes="yes">/var/www/html</directories>
  ```

  * 웹 루트 디렉터리(/var/www/html)에 대한 실시간 감시 및 변경 보고 설정

***

## 4. 작동 원리

1. 공격 실행

* 공격자가 파일 업로드 취약점을 악용하여 서버에 새로운 웹쉘 파일을 생성하거나, 기존의 정상적인 파일을 수정하여 웹쉘을 업로드한다

2. 데이터 수집

* Wazuh Agent의 `syscheck` 모듈이 웹 서버 디렉터리(`/var/www/html`)를 실시간으로 모니터링한다.&#x20;
* 파일의 무결성(해시값, 크기, 권한 등)에 변화가 생기면 에이전트는 해당 이벤트를 즉시 포착하여 Wazuh Manager로 전송된다

3. 기본 무결성 룰 트리거

* Wazuh Manager는 전달받은 데이터가 새로운 파일 추가(Rule 554)인지, 혹은 기존 파일의 수정(Rule 550)인지를 판단하여 1차적으로 기본 무결성 룰을 발생시킨다

4. 커스텀 웹쉘 탐지

* 확장자 기반 필터링: 생성 또는 수정된 파일의 이름이 .php, .phtml, .php3, .asp, .aspx, .jsp, .cshtml 등 웹쉘 제작에 주로 사용되는 확장자인지 PCRE2 정규식을 통해 검사한다
* 최종 경보 발생: 확장자가 일치할 경우, 단순한 파일 변경이 아닌 웹쉘 공격 시도로 간주하여 Level 12의 고위험 경보를 발생시키고 대시보드에 기록한다

<figure><img src="https://3550524140-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMQqlpxjtA7kpPBgieO9x%2Fuploads%2FWk2ULnZVsAVgmIeI3eWL%2Fimage.png?alt=media&amp;token=ca56c1b6-9553-44f4-bc90-38be15e70cf8" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3550524140-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMQqlpxjtA7kpPBgieO9x%2Fuploads%2FZkggNBcjPTW38B2cydcN%2Fimage.png?alt=media&amp;token=b1b93980-5d36-42df-8796-1953e1e5bbee" alt=""><figcaption></figcaption></figure>

***

## 5. 트러블 슈팅

* FIM 실시간 감시는 인스턴스의 CPU 및 메모리 자원을 소모하므로, 성능이 부족한 `micro` 인스턴스에서는 탐지가 지연될 수 있음
* 이를 해결하기 위해 인스턴스 유형을 `medium`으로 변경하여 탐지 속도와 시스템 안정성을 확보
