버퍼 오버플로 공격은 어떻게 작동합니까? 해커로서 무대 뒤에서

버퍼 오버플로 공격은 어떻게 작동합니까? 해커로서 무대 뒤에서
당신과 같은 독자는 MUO를 지원하는 데 도움이 됩니다. 귀하가 당사 사이트의 링크를 사용하여 구매하면 당사는 제휴 수수료를 받을 수 있습니다. 자세히 알아보기

해커는 바이러스와 맬웨어를 사용하여 시스템을 어떻게 공격합니까? 경우에 따라 랜섬웨어일 수 있습니다. 경우에 따라 시스템 요구 사항을 소모하는 공격일 수 있습니다. 버퍼 오버플로는 이러한 공격 방법 중 하나입니다. 하지만 실제로는 무엇입니까? 이러한 공격은 어떻게 작동합니까?





오늘의 메이크업 비디오 콘텐츠를 계속하려면 스크롤하세요.

버퍼 오버플로란 무엇입니까?

그렇다면 실제로 버퍼와 스택은 무엇입니까? 버퍼는 컴퓨터에 제공하는 일부 입력 정보가 ​​메모리에 도달하기 전에 대기하는 필드입니다. 메모리에서 데이터를 불러오는 것은 시스템을 피곤하게 만드는 작업입니다. 따라서 버퍼 영역에 충분한 공간이 있을 때 여기에서 직접 데이터를 호출합니다. 이것은 장치의 성능 향상을 의미합니다. 물론 버퍼에 사용할 수 있는 공간이 가득 차면 메모리에 써야 합니다.





스택은 기본적으로 데이터 푸시(추가) 및 팝(제거) 작업이 수행되는 데이터 구조입니다. 버퍼와 스택의 개념은 매우 유사합니다. 그러나 버퍼는 들어오는 데이터를 임시로 저장하는 스택처럼 작동합니다.





이메일로 Apple ID 비밀번호 재설정

버퍼 오버플로우는 어려운 주제일 수 있지만 이름에서 알 수 있듯이 데이터 과부하가 있을 때 발생합니다. 예를 들어 시스템에 로그인하려고 합니다. 개발자는 사용자 이름에 250바이트의 공간을 할당할 수 있습니다. 300바이트의 데이터를 입력하면 버퍼가 오버플로됩니다. 이 오버플로는 메모리의 다른 데이터에 영향을 미쳐 피해를 줄 수 있습니다.

이것은 해커에게 좋습니다. 사이버 범죄자는 이러한 난장판을 다양한 공격 벡터와 결합하여 시스템을 해킹하고 관리자로 로그인할 수 있습니다.



버퍼 오버플로를 이해하기 위해 알아야 할 주요 주제는 CPU의 내부 아키텍처 , 메모리 레지스터 및 메모리가 데이터를 처리하는 방법. 다음은 알아야 할 CPU에 대한 몇 가지 용어입니다.





어셈블리 코드





저수준 프로그래밍 언어 , 즉 기계어에 가깝습니다.

완충기

고정 크기 할당된 메모리 공간 .

바이트 코드

고급 언어로 작성된 코드의 컴파일 가능한 중간 언어 형식입니다.

우분투 듀얼 부팅을 제거하는 방법

컴파일러

프로그래밍 언어를 기계 코드로 변환하는 프로그램.

더미

동적 가변 메모리 공간.

기억 이론의 기초

메모리 이론을 이해하지 않고는 실제로 버퍼 오버플로 문제를 해결하기 어려울 수 있습니다. 벽을 만들 줄도 모르고 집을 짓는 것과 같다고 생각하시면 됩니다.

해커의 관점에서 버퍼 오버플로를 실행하고 싶다고 상상해 보십시오. 이를 위해서는 메모리를 조작하고 CPU가 코드를 실행하도록 해야 합니다. 당신이 악의적인 의도를 가진 사람이라면 여기서 당신의 목표는 메모리를 과부하시키고 인접한 메모리 영역도 조작하는 것입니다.

  스택이 줄어들고 힙이 커지는 것을 보여주는 다이어그램

그러나 무엇보다 먼저 힙, 스택 및 텍스트 세그먼트의 개념에 집중해야 합니다.

스택이 생성되는 동안 메모리는 높은 메모리 주소를 사용합니다. 높은 메모리 주소는 확장 메모리 영역을 의미합니다. 그런 다음 주소 값이 감소하기 시작합니다. 메모리 스택은 메모리 사용 중에 LIFO(Last In, First Out)라는 방법을 사용합니다. 스택 메모리의 변수는 정의된 범위 내에서만 유효합니다. 이 범위를 벗어나면 오류가 발생합니다.

반면에 스택 메모리는 동적으로 작동하며 높은 주소에서 시작할 필요가 없습니다. 힙 메모리에는 제한이 없습니다. 모든 제한은 운영 체제에 의해 설정됩니다. 힙 메모리를 동적으로 변경할 수 있으며 이러한 제한은 힙 사용 중에 사용자의 필요에 따라 변경될 수 있습니다. 힙 메모리의 한계는 운영 체제 및 하드웨어에 의해 결정되는 요소에 따라 다릅니다. 즉, 이러한 제한 내에서 동적 사용을 제공합니다.

nintendo switch에서 netflix를 얻을 수 있습니까?

텍스트 세그먼트에는 프로그램 코드가 포함되고 데이터 세그먼트에는 전역 데이터가 포함됩니다. 높은 주소 공유 스택 및 힙 메모리 그들 중에서. 시스템은 런타임에 두 메모리를 모두 할당합니다.

버퍼 오버플로를 더 잘 이해하려면 컴퓨터 아키텍처에서 데이터를 저장하는 데 사용하는 범용 데이터 레지스터를 검사해야 합니다. 각 기록을 개별적으로 분석하는 대신 본질적인 사항에 집중하십시오.

  • ESP(확장 스택 포인터): 이 레지스터는 스택 맨 위에 있는 주소를 보유합니다.
  • EBP(확장 기준 포인터): 이것은 기본 포인터를 보유합니다.
  • EIP(확장 명령어 포인터): 그리고 이 레지스터는 실행될 다음 명령의 주소를 가지고 있습니다.

이러한 기술 용어는 약간 혼란스럽게 들릴 수 있지만 모두 메모리의 작은 파티션이라고 상상해 보십시오.

버퍼 오버플로 공격은 어떻게 작동합니까?

스택에 새 데이터를 추가하면 이 데이터가 맨 위에 배치됩니다. 그런 다음 모든 새 데이터가 아래로 이동됩니다. ESP는 스택의 맨 위에 있습니다. 따라서 이 경우 ESP는 더 낮은 메모리 주소로 이동합니다. 위에 추가된 데이터가 ESP를 아래로 밀어낸다고 상상해 보십시오.

  ESP와 EBP 사이에 있는 버퍼 공간을 보여주는 다이어그램

프로그램이 실행되기 시작하면 시스템은 로컬 변수로 스택 프레임을 생성합니다. 버퍼 오버플로 공격의 주요 목적은 EIP 또는 반환 주소에 대한 액세스 권한을 얻는 것입니다. 이 주소에 액세스할 수 있는 해커는 원하는 악성 코드를 가리키도록 명령할 수 있으며, 그러면 더 넓은 시스템에 영향을 미칩니다.

  반환 주소를 대상으로 하는 ESP의 데이터를 보여주는 다이어그램

각각의 새로운 데이터 비트와 함께 스택은 EBP 쪽으로 커집니다. 여기서 진짜 질문은 너무 많은 데이터를 입력하면 EBP를 EIP 쪽으로 밀 수 있는가 하는 것입니다. 그렇게 하면 원하는 데이터나 코드가 EIP에 위치하고 원하는 결과를 볼 수 있습니다. 남은 것은 그것을 실행하는 것입니다. 프로그램을 실행하면 EIP 코드를 가리키고 실행을 시작합니다. 결과적으로 해커라면 첫 번째 버퍼 오버플로 공격을 수행했을 것입니다.

다른 각도에서 예를 들기 위해 ESP, EBP 및 EIP라고 하는 밀도가 다른 액체가 용기에 들어 있는 것을 고려할 수 있습니다. 밀도가 낮기 때문에 ESP가 컨테이너 상단에 있다고 상상해 보십시오. 올리브 오일과 물처럼 섞이지 않아야 합니다. 그런 다음 악성 코드는 또 다른 액체입니다. 컨테이너에 추가하면 이 균형을 엉망으로 만들고 일부 액체를 대체하며 EIP와 혼합됩니다. 이는 버퍼 오버플로를 나타냅니다.

버퍼 오버플로 공격으로부터 보호하는 방법

그렇다면 이런 일이 발생하지 않도록 하려면 어떻게 해야 합니까?

첫째, 보안 취약성을 최소화하기 위해 소프트웨어 개발 프로세스 전반에 걸쳐 좋은 코딩 방법을 채택하는 것이 중요합니다. 신중하게 작성된 코드는 버퍼 오버플로의 가능성을 줄일 수 있습니다.

또 다른 단계는 방어 메커니즘을 사용하여 메모리 영역 모니터링, 버퍼 제한 확인 및 공격 감지를 허용하는 것입니다. 마지막으로 정기적으로 시스템을 업데이트하고 패치를 적용해야 합니다. 취약점을 수정하는 업데이트는 공격자가 알려진 취약점을 악용하기 어렵게 만듭니다. 또한 소프트웨어 및 방화벽과 같은 방어 도구를 사용하면 추가 보안 계층이 제공됩니다.

버퍼 오버플로에 대한 조치를 취하십시오.

버퍼 오버플로 공격은 사이버 보안에 중대한 위협이 되며 이에 대한 예방 조치를 취하는 것이 당연히 중요합니다. 다행히도 이러한 공격을 차단하고 방어 메커니즘을 강화할 수 있습니다. 패치를 수정하기 위해 소프트웨어를 최신 상태로 유지하는 것과 같은 많은 좋은 보안 관행은 이러한 공격과 기타 취약성으로부터 보호하는 데 도움이 됩니다.