나는 오래된 Debian Lenny를 실행하는 서버를 가지고 있습니다. 그렇습니다. 그게 문제의 절반일 것입니다. 또한 PHPMyAdmin 및 ProFTPd도 있습니다. 다시 한 번 이해합니다. 이것은 모두 나쁜 징조입니다.
하지만 평생 동안 이 사용자가 어떻게 로그인하고, 파일을 추가하고, 명령을 실행하는지 알 수 없습니다.
그들은 screen
세션을 시작하고, 그런 것을 입력한 nano file.sh
다음, 스크립트를 만들고 ./file.sh
실행할 수 있습니다. 이는 SSH 액세스 권한이 있다는 의미입니까? 난 이해가 안 돼요.
모든 로그 파일을 확인했고어디에도 없어인증 성공이 표시됩니다. 나는 users
내가 입력할 수 있는 모든 작은 명령을 확인합니다 .who
last
아무것도 없다누군가 로그인했다는 표시를 보여주세요.
때때로 나는 그들이 500
or 이 소유한 새 디렉토리를 생성 1XXX
하지만 해당 계정을 검색할 때 표시되지 않는 것을 발견했습니다.
무슨 일이 일어나고 있는지 알아내기 위해 제가 할 수 있는 일이 있나요? 우리는 서버를 정리할 예정입니다. 오해하지 마십시오. 하지만 앞으로 이와 같은 문제를 피할 수 있도록 정확히 무슨 일이 일어나고 있는지 알고 싶습니다.
나는 "phpmyadmin, 지원되지 않는 오래된 배포판, ftp 등을 사용하지 마십시오"에 대한 조언을 원하지 않습니다. 우리의 새 서버에는 안전하지 않은 것이 없으며 비밀번호 SSH 인증 키를 사용할 것입니다.
저는 사용자가 언제 로그인했는지, 어디서 로그인했는지 확인하는 방법을 이해하려고 노력하고 있습니다. 물론 제가 충분한 정보를 제공하지 못했을 수도 있지만, 누군가의 관심을 끌 수도 있지 않을까요? 감사해요.
답변1
대부분의 스크립트 및 수동 침입은 다음과 같습니다.
- 로그 항목 및 유사한 침입 징후를 정리합니다.
- 기본 서버 프로그램 외부에서 시스템에 접근할 수 있도록 루트킷을 설치합니다.
- 기본 프로그램(예: ps, netstat, ls 등)을 위 루트킷의 모든 활동을 숨기는 조작된 버전으로 교체합니다(즉, ps는 실행 중인 루트킷 프로세스를 표시하지 않습니다).
때때로 이러한 공격은 실수로 발생하여 흔적을 남깁니다. 하지만 상관없어:시스템의 진단 도구는 신뢰할 수 없습니다.
시험해보고 배우고 싶다면 다음을 수행할 수 있습니다.
예를 들어 "rkhunter" [*]를 설치하고 실행하면 알려진 루트킷이 있는지 확인하지만 다음이 없으면 출력을 신뢰할 수 없습니다.
- 침입이 발생하기 전에 한 번 이상 실행하십시오.
- 공격자가 시스템에 rkhunter 설치를 간과했기를 바랍니다(rkhunter 자체를 조작하지 않고).
복구 CD/USB로 부팅
- 시스템 디스크를 마운트하고 복구 시스템의 바이너리를 봅니다.
- 바이너리의 md5sum을 기존 버전과 비교합니다.
- 시스템을 가상 머신에 로드하고 네트워크 트래픽을 검사합니다.
간단히 말해서: 이러한 개방형 시스템에서 공격 벡터를 찾는 것은 거의 불가능합니다. 어떤 식으로든:
책임지고 부탁드립니다.가능한 한 빨리 시스템 연결을 끊으세요.그리고 처음부터 재설정하세요.
[*]또는 다른 IDS 시스템도 많습니다.
답변2
새 서버 OS가 n급으로 강화되었고 최신 패치를 적용했으며 더 이상 일반 텍스트 서비스가 없더라도 SQL과 같은 서버에서 실행되는 웹 애플리케이션을 통해 이전 서버에 액세스할 수 있습니다. 주입 또는 파일 업로드 취약점. 따라서 새 서버에 동일한 애플리케이션을 배포하면 다시 사용할 수 있습니다.
따라서 코드 검토를 수행하고("and"도 권장함), 해당 테스트를 전문으로 하는 사람을 사용하여 웹 응용 프로그램에 대한 웹 응용 프로그램 침투 테스트를 수행하고 테스트를 위해 커뮤니티에 버그 포상금을 제공하는 것이 좋습니다. 그리고 정기적으로 패치 적용, 취약성 검색 및 침투 테스트를 수행합니다. 최소한 1년에 한 번 또는 소프트웨어가 변경될 때 서버/응용 프로그램이 제공하는 내용에 대한 심각도에 따라 달라집니다.
추신: 서버가 오프라인일 때 이미지를 촬영하고 이미지에 대한 부검을 수행하여 해킹 타임라인을 생성하는 것을 고려해 보세요. 표시된 사용자 ID 500, 1xxx에 중점을 둡니다. 나는 특히 당신이 다시 표적이 될 가능성이 있는 경우 법의학을 수행하는 방법을 아는 것이 유용할 것이라고 생각합니다. 이전 답변에서 지적했듯이 해커는 자신의 흔적을 숨기고 중요한 라이브러리와 실행 파일을 변경하여 잘못된 타임라인을 남겼을 수 있습니다. 마찬가지로 이미지에 있는 실행 파일과 라이브러리의 MD5 합계를 수행하고 원본 버전과 비교하여 트랙을 커버했는지 확인할 수 있습니다.
답변3
편집증에 빠지자! 먼저 이 Linux를 종료하고 dd 명령을 사용하여 디스크의 전체 복사본을 만듭니다.
시스템이 인터넷에 직접 연결되어 있나요? 그렇지 않다면 트래픽을 스니핑하여 유용한 정보를 식별할 수 있습니다. 대답이 '예'라면 컴퓨터와 인터넷 사이에 컴퓨터를 몇 대 설치해 보세요. 그냥 기계 내부의 냄새를 맡아보면 어떨까요? 루트킷을 사용하면 우리의 노력이 스니퍼에게 보이지 않을 수 있으며 우리의 노력은 시간 낭비가 될 것입니다.
모든 정보, 코드, 데이터베이스를 추출하고 모든 것을 수동으로 검사하여 백도어가 없는지 확인하는 것이 좋습니다.
모든 라이브러리의 동일한 버전으로 유사한 머신을 다시 구축한 다음 전체 시스템을 스캔하고 모든 것의 해시를 계산하고 SHA1 또는 SHA2를 사용하고 MD5를 사용하여 충돌을 쉽게 계산할 수 있습니다. 우리는 편집증적입니다. 이것을 기억하십시오! 두 목록을 비교하고 추가로 grub/lilo의 비정상적인 매개변수와 이상한 모듈 로딩을 감지해 보십시오.
또한 사용자 및 SSH 키를 확인하십시오. 예를 들어 코드를 아파치로 실행하고 백도어를 남겨 루트 사용자에게 권한을 승계할 수 있는 버그가 있는지 소스 코드를 확인하세요.
모든 검사는 디스크 이미지를 사용하여 오프라인 환경에서 수행되어야 합니다.
스니핑 세션으로 돌아가서 비정상적인 트래픽을 감지해 보십시오. 컴퓨터가 손상되면 DDoSing과 같은 불법 활동에 사용되거나 다른 공격의 허브가 될 수 있습니다.
공격자가 어디에서 연결하고 있는지(아마도 TOR을 사용할 것임)와 그가 어떻게 연결하고 있는지 감지하면 공격자를 추적할 수 있습니다. 자동화된 스크립트 또는 실제 사용자가 서버를 제어하는지 확인하십시오. 사용자가 변수를 설정 해제하더라도 bash/sh/zsh나 공격자가 로그를 저장하는 데 사용하는 쉘을 다운로드하여 변경할 수 있습니다. SSH에 대해서도 동일한 작업을 수행하여 다른 곳의 로그인 정보와 함께 시작된 프로세스가 포함된 로그를 생성하도록 코드를 변경합니다. 그가 백도어를 사용하여 연결하는 경우(가능성이 가장 높음), 그것이 어떻게 작동하는지 파악하고 그가 귀하의 시스템을 무엇에 사용하는지 파악하십시오.
왜 이런 일을 하는가? 그가 불법적인 일을 하면 조만간 누군가가 그를 추적하여 길에서 당신을 발견하게 될 것이기 때문입니다. 심각한 문제에 빠지는 것을 방지하는 가장 좋은 방법은 무슨 일이 일어나고 있는지에 대한 증거를 확보한 다음 상황을 종료하고 좋은 변호사를 고용하는 것입니다.