NOP 슬라이드
NOP slide컴퓨터 보안에서 NOP 슬라이드, NOP 스레드 또는 NOP 램프는 프로그램이 슬라이드 상의 메모리 주소로 분기할 때마다 CPU의 명령 실행 플로우를 최종 목적지로 "슬라이드"하는 일련의 NOP(무작동) 명령입니다.
이 기술은 분기 명령 대상을 정확하게 알 수 없는 경우 프로그램 실행을 지시하는 데 사용되는 소프트웨어 악용에서 일반적인 용도를 확인합니다.기타 주목할 만한 응용 프로그램으로는 EMC 인식 프로그래밍과 같은 방어적 프로그래밍 전략이 있습니다.
NOP 슬라이드는 표준 NOP 명령 목록으로 구성되면 작동하지만, 이러한 코드의 존재는 의심스럽고 자동으로 탐지하기 쉽습니다.이러한 이유로 실용적인 NOP 슬라이드는 종종 비표준 NOP 명령어(레지스터 자체를 이동하거나 0을 추가하는[1] 등) 또는 프로그램 상태에 큰 영향을 미치는 명령어로 구성되어 있어 식별이 훨씬 더 어렵습니다.
NOP-sled는 스택버퍼 [2]오버플로우를 부정 이용하는 가장 오래된 기술입니다.대상 영역의 크기를 효과적으로 늘림으로써 버퍼의 정확한 주소를 찾는 문제를 해결합니다.이렇게 하려면 no-op 머신 명령으로 스택의 더 큰 섹션이 파손됩니다.공격자가 제공한 데이터의 마지막에, no-op 명령 후에, 공격자는 셸 코드가 있는 버퍼의 상부에 상대적인 점프를 실행하도록 지시합니다.이 no-ops 컬렉션은 'NOP-sled'라고 불립니다.이는 반환 주소가 버퍼의 no-op 영역 내의 주소로 덮어쓰면 실행이 마지막에 점프를 통해 실제 악성 코드로 리다이렉트될 때까지 no-ops를 "슬라이드"하기 때문입니다.이 방법에서는 공격자가 비교적 작은 셸 [3]코드 대신 NOP가 스택에서 어디에 있는지 추측해야 합니다.
이 기술의 보급으로 많은 침입 방지 시스템 벤더가 사용 중인 셸 코드를 검출하기 위해 이 no-op 머신 명령 패턴을 검색합니다.NOP-sled에 반드시 기존의 no-op 머신 명령만 포함되어 있는 것은 아닙니다.셸 코드가 실행되지 않을 정도로 머신 상태가 손상되지 않는 명령어는 하드웨어 지원 no-op 대신 사용할 수 있습니다.그 결과, 부정 이용 라이터는 셸 [4]코드 실행에 실질적인 영향을 미치지 않는 임의의 명령으로 no-op 스레드를 구성하는 것이 일반적인 관례가 되었습니다.
이 방법을 사용하면 공격이 성공할 가능성이 크게 향상되지만 문제가 없는 것은 아닙니다.이 기술을 사용하는 부정 이용은 NOP슬레드 [5]영역 내에 있는 스택의 오프셋을 추측할 수 있는 행운에 의존해야 합니다.추측이 틀리면 일반적으로 대상 프로그램이 충돌하고 시스템 관리자에게 공격자의 활동에 대해 경고할 수 있습니다.또 다른 문제는 NOP-sled에는 NOP-sled를 사용할 수 있을 만큼 큰 용량의 메모리가 필요하다는 것입니다.이 문제는 영향을 받는 버퍼의 할당된 크기가 너무 작고 스택의 현재 깊이가 얕을 때(즉, 현재 스택프레임의 끝에서 스택의 시작까지 공간이 많지 않은 경우) 발생할 수 있습니다.NOP-sled는 문제에도 불구하고 특정 플랫폼, 환경 또는 상황에 적합한 유일한 방법이며, 여전히 중요한 기술입니다.
NOP 슬라이드의 엔트로피는 NOP 슬라이드에 가해진 제약조건에 따라 달라집니다.특정 레지스터가 사용되지 않는다고 판단될 경우(즉, 다음 사용 전에 이미 알려진 값으로 설정됨), NOP 슬라이드에서 임의로 레지스터를 조작하는 명령을 사용할 수 있습니다.또한 NOP 슬라이드와 명령 포인터 양쪽의 정렬이 결정론적인 경우에는 정렬되지 않은 실행 결과에 관계없이 NOP 슬라이드에서 멀티바이트 명령을 사용할 수 있습니다.NOP 슬라이드와 페이로드가 도입되는 공격 벡터를 제공하는 입력이 필터링되면(예를 들어 인쇄 가능한 문자만 받아들이는 등), 포함 가능한 명령의 필드는 제한된다.아키텍처 확장의 일부인 명령(SSE 등)은 프로그램 상태와 관련이 없는 경우가 많지만 확장이 지원되지 않는 시스템을 대상으로 하는 NOP 슬라이드에서는 사용할 수 없습니다.
검출
메모리 내의 NOP 슬라이드의 존재를 검출하기 위한 많은 기술이 있습니다.예를 들어, 2005년에 그리스 연구진은 메모리 이미지에 긴 바이트 시퀀스가 포함되어 있는지 여부를 확인함으로써 해당 시퀀스에 포함된 각각의 시작 오프셋이 유효하고 동일한 [6]위치로 실행되도록 함으로써 쉽게 검출할 수 있다는 것을 발견했습니다.
「 」를 참조해 주세요.
- NOP 슬라이드를 보완하는 기술인 힙 스프레이
- 버퍼 오버플로 † NOP 스레드 기술
- 면역 인식 프로그래밍» NOP 슬라이드
- 웜 메모리 테스트
레퍼런스
- ^ corelanc0d3r (2011-12-31). "Exploit writing tutorial part 11: Heap Spraying Demystified". Corelan Team. Archived from the original on 2015-04-25. Retrieved 2014-01-15.
- ^ Vangelis (2004-12-08). "Stack-based Overflow Exploit: Introduction to Classical and Advanced Overflow Technique". Wowhacker via Neworder. Archived from the original (text) on 2007-08-18.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - ^ Balaban, Murat. "Buffer Overflows Demystified" (text). Enderunix.org.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - ^ Akritidis, P.; Markatos, Evangelos P.; Polychronakis, M.; Anagnostakis, Kostas D. (2005). "STRIDE: Polymorphic Sled Detection through Instruction Sequence Analysis" (PDF). Proceedings of the 20th IFIP International Information Security Conference (IFIP/SEC 2005). IFIP International Information Security Conference. Archived from the original (PDF) on 2012-09-01. Retrieved 2012-03-04.
- ^ Klein, Christian (September 2004). "Buffer Overflow" (PDF). Archived from the original (PDF) on 2007-09-28.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - ^ Akritidis, P.; Markatos, E. P.; Polychronakis, M.; Anagnostakis, K. (2005). "STRIDE: Polymorphic Sled Detection Through Instruction Sequence Analysis". Security and Privacy in the Age of Ubiquitous Computing. Security and Privacy in the Age of Ubiquitous Computing: IFIP TC11 20th International Information Security Conference 2005-05-30 -- 2005-06-01, Chiba, Japan. IFIP Advances in Information and Communication Technology. Vol. 181. pp. 375–391. doi:10.1007/0-387-25660-1_25. ISBN 978-0-387-25658-0.
외부 링크
- NOP 슬라이드를 사용하여 시스템 손상
- Neville, Alan (2010-03-20). "IDS Logs in Forensics Investigations: An Analysis of a Compromised Honeypot" (PDF). Archived from the original (PDF) on 2012-03-31. Retrieved 2011-09-03.