네트워크 또는 전원을 끌어 내시겠습니까? (루팅 된 서버 관리)


11

서버가 루팅되면 ( 예 : 이와 같은 상황 ) 가장 먼저 결정해야 할 것은 격리 입니다. 일부 보안 전문가는 법의학이 완료 될 때까지 즉시 치료에 들어 가지 않고 서버를 온라인 상태로 유지하는 것이 좋습니다. 이러한 조언은 보통 APT를 위한 것 입니다. 가끔씩 스크립트 키디 위반이 발생하는 경우와 다르므로 조기에 문제를 해결하기로 결정할 수 있습니다. 치료 단계 중 하나는 서버를 격리 하는 것입니다. Robert Moir의 답변 에서 인용 - "피해자를 대상에서 분리하십시오".

네트워크 케이블 또는 전원 케이블 을 당겨 서버를 포함 할 수 있습니다 .

어떤 방법이 더 낫습니까?

다음의 필요성을 고려합니다.

  1. 추가 피해로부터 피해자를 보호
  2. 성공적인 법의학 집행
  3. (아마도) 서버에서 중요한 데이터 보호

편집 : 5 가정

가정 :

  1. 일찍 발견했습니다 : 24 시간.
  2. 조기 복구 : 작업에서 3 일 동안 1 명의 시스템 관리자 (법의학 및 복구).
  3. 서버가 서버 메모리의 내용을 캡처하는 스냅 샷을 작성할 수있는 가상 머신 또는 컨테이너가 아닙니다.
  4. 기소를 시도하지 않기로 결정했습니다.
  5. 침입자가 어떤 형태의 소프트웨어 (아마도 정교한)를 사용하고 있고이 소프트웨어가 여전히 서버에서 실행되고 있다고 의심합니다.

2
여기로 떨어질 수도 있습니다 : security.stackexchange.com
sysadmin1138


2
@Tom-속임수가 아니며 해당 질문의 특정 요점에 대한 확장 토론입니다.
mfinni

3
@ sysadmin1138, 특히 security.stackexchange.com/q/181/33
AviD

답변:


6

APT에 직면 한 경우 가장 좋은 방법은 허니팟을 설정하고 서버 모니터링 외에도 허니팟을 통해 유입 및 유출되는 모든 트래픽을 철저히 조사하는 것입니다.

메모리를 통과하는 척도는 시간과 노력 측면에서 너무 비싸므로 다른 모든 방법을 시도하지 않으면 일반적으로 가치가 없으며, 가치가 있다고 판단되면 일반적으로 쉽게 덤프 할 수있는 허니팟을 설정하는 것이 가장 좋습니다 메모리와 시스템 상태를 즉시 다른 시스템에 전달하므로 시스템이 작동 중일 때 감지 될 위험이 줄어 분석 할 수 있습니다.

공격자가 로그를 제외하고 컴퓨터가 전원을 껐다 켜면 이미지와 똑같이 보이는 정도까지 메모리에 모든 것을 보관 한 상황이 하나있었습니다. 그런 다음 취약점이 여전히 존재하기 때문에 해킹 한 후 다시 사용하기 시작합니다. 백도어를 따로 두지 않아도됩니다. 여기에서 메모리 평가가 도움이되었지만이 경우 트래픽을 감시하면 취약점을 신속하게 식별 할 수 있습니다.

따라서:

전원을 끄고 오프라인 디스크 평가를 수행하지 않는 유일한 이유는 위협이 발생하고 작동하는 동안 위협에 대한 철저한 메모리 분석을 수행해야하는 경우입니다. 이것이 필요한 지점에 도달했다면 어느 한쪽 플러그를 뽑을 이유가 없습니다.

메모리 분석을 수행하지 않는 경우 전원 플러그를 뽑는 것이 최선의 방법입니다. 이더넷을 당기거나 종료 명령을 사용하면 공격자의 소프트웨어에 사전 통지 만하는 경우가 있습니다.

그래서:

메모리 분석을하지 않는 한 둘 다 당기지 마십시오.


16

RAM 법의학 (예 : / dev / shm)이 도움이 될 수 있습니다.

그러나 나는 전원 케이블을 뽑는 것을 선호합니다 (그러나 로그인하고 rsync / proc을 바로 시도하십시오).

전원 케이블을 사용해야하는 이유는 다음과 같습니다.

  1. 해킹 된 시스템에서 법의학을 수행 할 때 "범죄 현장 전체를 밟고 있습니다"
  2. 루트 키트는 네트워크 링크 다운 이벤트 에서 악의적 인 사람이 무언가 (예 : 시스템 삭제)를 실행하기 어렵지 않게 계속 실행 됩니다.

Kyle Rankin은 법의학 강연에 대한 좋은 소개를 했으며, 전원 케이블을 뽑는 것이 좋습니다.


"범죄 현장 전체에 스테핑"으로 +1 정확히 무엇을하고 있는지 또는 정확한 법 의학적 증거 수집에 관심이 없다면, 법의학을 배우는 방법을 배우면서 증거를 오염시키는 대신 전문가를 부르는 것이 좋습니다.
dunxd

10

네트워크를 분리하십시오. 네트워크에 연결되어 있지 않으면 공격자가 추가 정보를 가져올 수 없습니다. 힘없이 법의학을 수행하는 것은 매우 어렵습니다 (읽기 : 불가능).


3
오프라인에서 (A) 라이브 CD를 통해 (B) 하드 드라이브를 다른 시스템으로 이동하거나 (C) 영향을받는 하드 드라이브의 이미지를 촬영 한 후 (라이브 CD를 통해) 법의학을 수행 할 수 있습니다. .
Aleksandr Levchuk

3
종종 유용한 증거가 기억에 있습니다. 이것은 전력 손실이 권고되기 전에 허용되어야합니다.
Sirex

또한 안전에 의해 LOM 인터페이스의 연결을 끊는 것을 생각하십시오. :)
Kedare

7

요즘에는 가상 머신이 될 수 있으므로 두 방법 모두 쉽고 원격으로 수행 할 수도 있습니다. (가상 머신은 물론 스냅 샷을 사용할 수도 있습니다)

네트워크에서 자동 첫 번째 단계로 연결을 끊는 것이 좋습니다. 이는 다음 단계에서 전원 코드를 잡아 당기거나 다른 것을 수행하는지 여부에 따라 다음 단계를 숙고 할 시간을 제공하기 때문입니다. 회사의 "보안 대응 절차"를 통해 기계를 자세히 파는 데 시간을 소비 할 수 없다면 RAM의 내용을 보존하는 것이 그렇게 중요하지 않을 수 있습니다.

나는 어떤 방식 으로든“피해자를 대상에서 분리하는 것”을 얻는 것이 방법보다 중요하므로 두 가지 접근 방식이 모두 유효하다고 제안합니다. 나는 직접 전원 코드를 뽑는 데 아무런 문제가 없을 것입니다.


VM의 경우 +1 네트워크의 플러그를 뽑아도 루트킷은 계속 실행됩니다. 네트워크 링크 다운 이벤트 에서 악의적 인 사람이 무언가 (예 : 시스템 삭제)를 실행하는 것은 그리 어렵지 않습니다
Aleksandr Levchuk

6
실행중인 시스템 상태의 스냅 샷은 내가 생각하지 않는 것에 대해 나 자신에게 열중하는 훌륭한 아이디어입니다.
jgoldschrafe

@Alexsandr-실제 예제를 생각하려고했지만 공백을 그립니다.하지만 완전히 메모리에 남아있는 루트킷을 기억하는 것 같습니다. 플러그를 당기면 손실됩니다. 증거가 없어 질 위험이있는 것 같습니다.
Rob Moir

6

이것은 어느 쪽도 아니거나 상황이 아닙니다. 일반적으로 네트워크에서 제거 된 시스템에서 특정 법의학 (프로세스 덤프, 소켓 청취, / tmp의 파일 등)을 수행 한 다음 안전한 진단 프로그램에서 나머지 진단을 수행하려고합니다. 환경 (즉, 라이브 CD). 그러나 어떤 접근 방식도 옳지 않은 상황이 있으며 조직에 어떤 것이 있는지 생각하고 이해해야합니다.


네트워크의 플러그를 뽑으면 루트킷이 계속 실행됩니다. 네트워크 링크 다운 이벤트 에서 악의적 인 코드가 무언가를 실행하는 것 (예 : 시스템 삭제)은 어렵지 않습니다 .
Aleksandr Levchuk

그것은 확실히 사실이며, 상황의 민감도에 따라 취할 것인지 평가하고 결정해야 할 기회입니다. 일부 루트킷은 메모리에만 상주하며 시스템의 전원을 끄면 어떻게 도달했는지 파악할 수 없습니다. 링크 상태를 유지하면서 스위치 포트에서 트래픽을 차단하려고 시도 할 수 있지만 루트킷은 소프트웨어이며 다른 소프트웨어로 수행 할 수있는 모든 작업을 수행 할 수 있습니다. 기본 게이트웨이를 조사하여 도달 할 수없는 경우 동일한 폭탄을 차단하는 것은 없습니다.
jgoldschrafe

4

어떤 일을하기 전에 최종 기소에 대한 증거를 보존해야하는지 파악하십시오. 증거 처리는 매우 까다로운 주제이며 희미하게 훈련 된 사람에게는 적합하지 않습니다. 당신이 대답하면, 훈련 된 컴퓨터 법의학 담당자가 거기에서 그것을 취할 수 있습니다.


1
먼저, 기소 여부를 결정해야한다고 생각 합니까? . 그의 대화에서 Kyle Rankin ( goo.gl/g21Ok ). 이것을 논의함으로써 시작합니다. 기소하려면 상당한 손실을 입었다는 증거를 제시해야합니다.
Aleksandr Levchuk

1
@Aleksander 일반적으로 손상된 하드웨어 및 데이터를 재사용 할 수 있는지 여부 또는웨어 하우스를 구축하고 완전히 새로운 부품으로 새로운 시스템을 구축해야하는지 여부를 프로세스 초기에 매우 알아야합니다. 금융 또는 비즈니스 평판 손실이 입증되기 전에 가능성이 높습니다. 증거 체인을 보존하는 것은 누군가 잠재적으로 실행 가능한 이벤트가 발생했음을 알게 된 순간에 발생해야합니다.
sysadmin1138

금전적 손실이 존재하는지 여부를 모를 수 있으므로 옵션을 공개적으로 기소하거나하지 않는 것부터 시작하는 것이 가장 좋습니다. 따라서 초기 단계에서 책으로 모든 것을하는 것은 양육권을 유지하는 것이 중요합니다.
Rory Alsop

3

서버 전원을 끌 필요가 없습니다. 경계 게이트웨이 / 라우터에서 연결을 비활성화 할 수 있습니다. 하나의 방화벽 규칙만으로도 추가로 송수신 된 패킷을 폐기 할 수 있습니다.


+1 이것이 게이트웨이를 갖는 것이 좋은 생각 인 이유 중 하나입니다. 하지만없는 경우 어떻게해야합니까? 직접 네트워크 케이블을 분리하면 루트킷이 네트워크 링크 다운 이벤트를 수신 할 수 있습니다 . 루팅 된 서버에 로그인하지 않고 0 일에 무언가를하는 것이 나쁜 생각입니까?
Aleksandr Levchuk

2

대답은 "뿌리"의 의미에 크게 좌우됩니다. 민감한 정보를 찾는 활동적인 인간 공격 자라고 생각한다면 네트워크 리드를 뽑는 것이 일반적으로 좋은 생각입니다.

힘을 끌어내는 것은 대답하기가 훨씬 어렵습니다. 트랙을 덮을 수있는 악성 코드가 실행되고 있다고 생각되면 그렇게하십시오. 그러나 여전히 메모리에 침입의 증거가있을 수 있다고 생각되면 그대로 두십시오.

전반적으로 악성 코드, 불만을 품은 직원 또는 특정 목표를 염두에 둔 사람을 다루고 있는지 여부에 달려 있습니다.

주의 측면에서 오류가 발생하면 전원을 당기십시오. 소량의 잠재적 증거는 손실되지만 자동화 된 코드로 다른 증거를 대량으로 제거하지 못할 수 있습니다.

-다시 말하지만 기계가 손상되었다고 느끼고 기계에 민감한 데이터가 없다는 것을 알고 있다면 다른 곳의 네트워크 보안에 대해 확신하고 있으며 그 결과를 이해하면 법의학 병을 얻을 수 있습니다. 공격을 추적하거나 이해할 수 있는지 확인한 다음 공격을 시작하십시오. 하지만 일반적으로 좋은 생각은 아닙니다.


1

내 대답은 편집 전이고 5 가지 가정이었습니다.
서버가 루팅되면 정교하고 대상이 지정된 공격자를 처리하고 언제 어디서 공격을 받았는지 알 방법이 없다고 가정했습니다. (기계가 뿌리를 내렸기 때문에 분명히 당신이 말하는 것을 믿을 수는 없지만 IDS와 같은 오프 박스 정보가있을 수 있습니다 ...)
나는 또한 당신이 공격자를 다루는 데 관심이 있고 흔들리는 것에 관심이 있다고 가정했습니다. 귀찮은 비행처럼 가정 된 공격자가 스크립트 아동 인 경우에는 다릅니다. 또한 공격자는 대상이 정교하고 정교하기 때문에 컴퓨터에서 사용자 정의 소프트웨어를 실행하여 사용자의 작업에 응답 할 수 있다고 가정합니다.


둘 다. 나쁜 생각 중 하나 인 /security//q/181/33을
확인하십시오 . 흑기사 에게 두 개의 반창고를주는 것과 같습니다 ... 너무 작고 늦었습니다. 그다지 도움이되지 않습니다.


이 답변이 너무 멀리 있다고 생각하거나 충분히 "보안 의식"이 없다고 생각하는 모든 사람들에게는 이미 너무 늦었다는 것을 알아야합니다 .
완전히 분리하더라도 더 이상 서버가 아닙니다. 당신이 종료하더라도, 모든 AVS와 무엇을 실행 - 당신이 더 이상 소유하지 않은, 그들은 않습니다.
그것은 "뿌리"의 정의입니다.

자, 그들이 그것을 소유하고 당신에게서 그들의 소유권을 숨길 수 있다고 가정하면, 당신은 무엇을 끊어야합니까? 그것이 뿌리를 내릴 수 있기 때문에 그것이 달성 할 수
있는 유일한 것은 당신의 적에게 당신이 그들에게 있다는 것을 알리는 것입니다. 그것은 단순히 경비원을 세우고 그들이 (아직하지 않은 경우) 스스로 청소를 시작하게하여 법의학에 대한 희망을 없애줍니다.
여전히 해당 서버 또는 서버의 데이터를 보호하고 있지 않습니다. 얼마나 시간이있다 뿌리? 당신은 어떻게 알겠습니까?

당신이 더 나은 일 :

  • 서버를 가동 상태로 두십시오.
  • 등 내부 네트워크, 다른 서버의 나머지 부분을 분리 -하지만 최선가 있으므로, 시뮬레이션의 어떤 종류를 연결하는 것 같다 연결되어 있습니다.
  • 실시간 / 네트워크 법의학을 조용히 시작하고 추적을 실행하십시오.
  • 손상의 정도와 길이를 알아 내려고 시도하십시오 (2 시간 전 또는 2 개월 전에 발생한 경우 분명히 다릅니다).
  • 거기에서 계속 ... 실제 손상 을 완화 한 후에 만 청소하십시오.
  • 물론 근본 원인을 조사하고 다시 발생하지 않도록 모든 제어를 시행하는 것을 잊지 마십시오 ...

2
나는 이것이 시뮬레이션 / 격리 된 환경으로 빠르게 이동할 수있는 상황에서 작동 할 수 있다고 생각하지만 실제로는 최소한의 영향을 미치기 위해 전력 또는 네트워크 연결을 끊기를 원하는 조직은 거의 없습니다. 종종 그 위협을 즉시 제거하는 것입니다. (여전히 다음과 같이 원하는대로 +1했습니다 :-)
Rory Alsop

@Rory 문제는 영향을 최소화 할 수 없다는 것 입니다. 서버가 이미 준비되어 있습니다. 당신은 그것을 다시 얻지 못하고 있으며 민감한 데이터는 도난 당했을 가능성이 있기 때문에 잠재적으로 도난 당했을 가능성이 있습니다. 즉, 시뮬레이트 된 환경은 단지 착빙 일 뿐이며 중요한 것은 격리입니다. 대부분의 조직에는 견고한 방화벽이 있고 몇 가지 액세스 규칙을 뒤집어 놓았을 것입니다. 그것이 접근 가능한 서버가 DMZ에 있어야하는 또 다른 이유입니다. 그 부분을 더 쉽게 만듭니다 ....
AviD

또한 OS를 기반으로 할 때 위의 내용을 분명히하고 싶습니다 . 웹 사이트에서 어떤 형태의 응용 프로그램 수준의 취약점 (예 : SQL Injection)이 악용되고있는 경우, 절대로 종료하고 손에 all 수있는 모든 전선을 당겨 빼십시오! 그러나 OS 루트는 다릅니다. 시스템의 전체 인프라를 제어합니다. 더 이상 제어 할 수 없습니다.
AviD

2
아니, 내가 의미하는 바는 그 뿌리를 내린 기계 이상의 영향을 최소화하는 것이 었습니다. 완전히 잃어버린 것에 동의하지만, 신속하게 격리 할 수 ​​없다면 컨트롤러가 나머지 시스템에 어떤 역할을하는지 알 수있는 방법이 없습니다
Rory Alsop

0

가정을 검토 한 후에 두 가지를 모두 수행하십시오. CD / DVD 기반 매체를 사용하여 현재 상태를 덤프하십시오. 주로 당신은 당신이 타협 된 방법을 알아낼 수 있기를 원할 것입니다. 백업 이미지에없는 사용자 데이터를 복구하려고 할 수도 있습니다. 에야디야

그런 다음 오염되지 않은 최신 백업 미디어에서 시스템을 재 구축하십시오. 가능하면 체크섬으로이를 확인하십시오. 또는 설치 매체에서 소프트웨어를 다시 설치하고 재구성하십시오. Puppet 또는 cfEngine을 사용하여 서버를 구성한 경우 재구성이 자동으로 수행되어야합니다.

사용자 데이터를 다시로드하고 루트 키트 구성 요소를 검색하십시오. 데이터 디렉토리에 setuid 또는 setgid 프로그램이 없는지 확인하십시오.

시스템을 감염시키는 데 사용되는 액세스 방법을 결정하고 닫습니다. 서버가 단계적으로 재 활성화되어 응용 프로그램이 예상대로 실행되고 있는지 확인할 수 있습니다. 새로운 감염 시도를주의 깊게 모니터링하십시오.

이것은 모두 감염이 루트 수준이라고 가정합니다. 웹 서버가 실행하는 코드를 변경하여 웹 감염을 수행 할 수 있습니다. 웹 서버가 해당 코드에 대한 쓰기 액세스를 허용하면이를보다 쉽게 ​​수행 할 수 있습니다. 루트 계정이 손상된 것처럼이 사례를 처리 할 수 ​​있습니다.

한 시스템의 루트가 한 시스템에서 손상된 경우 더 많은 시스템이 손상되었을 수 있습니다. 감염된 시스템의 암호없이 액세스 할 수있는 시스템을 신중하게 고려하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.