나는 누군가가 파일을 생성한 다음 생성 날짜를 이전 날짜로 변경하는 것을 원하지 않습니다(예: 터치 또는 시스템 호출 사용).
내 Ubuntu 호스팅 계정에서 해킹된 PHP 코드를 많이 받았습니다.
파일이 도착할 때 파일 시간을 변경하지 못하도록 비활성화하면 새 파일을 쉽게 찾는 데 도움이 됩니다.
이것을 달성할 수 있는 방법이 있나요?어디서도 답을 찾을 수 없어요!
답변1
내가 아는 한, 사용자가 변경한 파일의 수정 시간을 제한할 수 있는 방법은 없습니다. 수정 시간을 변경하는 것은 예를 들어 아카이브에서 파일을 추출하거나 다른 컴퓨터에서 파일을 복사할 때 사용되는 일반적인 기능입니다.
수정 시간을 보는 대신 inode 변경 시간(ctime)을 살펴보세요. mtime 대신 ctime을 나열하는 -c
옵션 을 전달합니다 .ls
ctime을 나열하면 최근에 수정되거나 이동된 파일을 감지할 수 있습니다. 물론 오탐(false positive)이 발생할 수도 있습니다. 공격자가 루트 액세스 권한을 갖고 있으면 모든 베팅이 취소됩니다.
이는 수리보다 법의학에 더 유용합니다. 명백히 감염된 파일을 삭제하는 등의 간단한 수정을 통해 가장 기본적인 공격만 대응할 수 있습니다. 일반적으로 찾을 수 있는 것보다 더 많은 공격이 있습니다. 공격을 탐지한 경우:
- 시스템을 오프라인으로 전환합니다. 사본을 만드세요.
- 전체 시스템을 다시 설치~에서알려진 좋은 소스. 감염된 시스템의 어떤 것도 재사용하지 마십시오. 신뢰할 수 없습니다. 알려진 보안 취약점이 없는 모든 소프트웨어의 최신 버전을 설치했는지 확인하십시오.
- 다음에서 데이터를 복구하세요.알려진 양호한 백업. 마찬가지로, 손상된 시스템에서 생성된 데이터는 신뢰할 수 없습니다.
- 감염된 시스템의 복사본을 연구하여 공격자가 어떻게 침입했는지 알아보세요. 공격자가 침입하는 방법(취약성)은 공격자가 나중에 수행하는 방법(페이로드)과 매우 다릅니다. 증상이 아닌 근본 원인을 찾아야 합니다. 이 부분은 전문가가 필요할 수 있습니다.
- 근본 원인이 더 이상 존재하지 않는다고 판단되면(잘못된 구성 또는 보안 버그가 수정됨) 새 시스템을 온라인으로 전환할 수 있습니다.
답변2
구성 파일의 옵션을 사용하여 mtime
이러한 PHP 기능을 비활성화함으로써(예를 들어 ) touch
해커가 PHP 코드를 사용하여 웹 서버()에서 쓸 수 있는 파일의 수정 시간을 변경하는 것을 방지 할 수 있습니다.[disable_functions][1]
php.ini
그러나 파일 수정 시간은 서버에 업로드될 때 변경되지 않으므로 수정 시간을 추적하는 것은 올바른 접근 방식이 아닙니다(즉, 이 시간은 시스템이 손상되었을 때보다 훨씬 빠를 수 있음). 더 나은 접근 방식은 ctime
inode 파일의 상태가 변경되는 시기를 추적하는 것입니다 ( ). 내가 의미하는 바를 증명하려면 다음을 수행하십시오.
$ touch test.txt
$ stat test.txt
File: ‘test.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
...
Access: 2014-10-28 05:51:10.329081380 +0000
Modify: 2014-10-28 05:51:10.329081380 +0000
Change: 2014-10-28 05:51:10.329081380 +0000
$ touch -t 10011234 test.txt
$ stat test.txt
File: ‘test.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
...
Access: 2014-10-01 12:34:00.000000000 +0000
Modify: 2014-10-01 12:34:00.000000000 +0000
Change: 2014-10-28 05:52:57.669657564 +0000 <= unadulterated by touch
루트 접근권한이 없으면 수정이 전혀 불가능하다고 생각합니다 ctime
.