2009-12-05 3 views
20

나는 Reversing: Secrets of Reverse EngineeringHacking: The Art of Exploitation을 읽고 모두 읽었습니다. 그들은 둘 다 자신 만의 방식으로 조명하고 있었지만 여전히 많은 테크닉과 정보가 어느 정도 구식이라고 느낍니다.악용 작문에있어 선진적이고 현대적인 자료는 무엇입니까?

악명 높은 Phrack 기사, Smashing the Stack for Fun and Profit이 1996 년에 작성되었을 때 컴퓨터 보안이 "황금기"라고 생각하기 바로 전에였습니다.

그 후 몇 년 동안 악용 사례를 작성하는 것은 비교적 쉽습니다. C 및 어셈블리의 일부 기본 지식은 버퍼 오버플로를 수행하고 희생 된 시스템에서 임의의 쉘 코드를 실행하는 데 필요한 모든 것입니다.

가볍게 두는 것은 많은 것을 더 복잡하게했습니다. 이제 보안 엔지니어는 Address Space Layout Randomization (ASLR), Data Execution Prevention (DEP), Stack Cookies, 힙 쿠키와 같은 것들과 경쟁해야합니다. 작문 익스플로잇의 복잡성은 최소한 규모에 달했습니다.

대부분의 버퍼 오버런 공격은 최신 보호 기능을 끄기 위해 많은 플래그로 컴파일하지 않고도 찾을 수있는 자습서에서 실행할 수 없습니다.

이제 익스플로잇을 작성하려면 DEP를 끄는 방법을 고안해야하며 쉘 코드로 수백 번 셸 코드를 스프레이하고 쉘 코드 근처의 임의의 메모리 위치를 추측 해보십시오. 현재 사용중인 관리되는 언어의 보급은 말할 것도없고 이러한 취약점에 관해서는 훨씬 더 안전합니다.

나는 보안 지식을 10 년 이상 된 시스템의 장난감 착취를 넘어서서 확장하려고합니다. 위에 설명 된 모든 보호 조치에도 불구하고 악용 사례 작성 문제를 해결하는 데 도움이되는 리소스를 찾는 데 문제가 있습니다.

현대 시스템에 대한 악용 사례를 작성하는 데 어려움을 겪고있는 첨단적이고 널리 퍼진 논문, 서적 또는 기타 리소스는 무엇입니까?

답변

6

'스매싱 스택'에 대해 언급했습니다. 연구 결과에 따르면이 기사는 출판되기 전에 구식이었습니다. 80 년대 후반 Morris 웜은 fingerd IIRC를 악용하기 위해이를 사용했습니다. 당시에는 모든 서버가 낙관적 인 C 언어로 쓰여졌 기 때문에 커다란 혼란을 겪었습니다.

몇 년 (10 년)이 걸렸지 만 점차 모든 사람들이 공개 서버와 관련된 보안 문제를 의식하게되었습니다.

C로 작성된 서버는 많은 보안 분석을 수행하는 동시에 서버 측 처리를 다른 언어 및 런타임으로 분류했습니다.

오늘은 상황이 조금 다릅니다. 서버는 큰 목표로 간주되지 않습니다. 오늘날에는 큰 물고기 인 고객입니다. 클라이언트를 납치하면 서버가 해당 클라이언트의 자격 증명에 따라 작동 할 수 있습니다.

풍경이 변경되었습니다.

개인적으로 저는 어셈블리 게임을하는 산발적 인 팬입니다. 나는 그들에게 실용적인 용도는 없지만, 이것에 익숙해지기를 원한다면 Metasploit 소스를 확인하고 메일 링리스트를 읽는 것이 좋습니다. 그들은 미친 것들을 많이하고 그것은 열린 곳에서 모두 있습니다.

+1

1 단지에 대한 '메타 스플로 잇'참조하는 경우. 그 도구는 좋은 해커의 손에 금입니다. –

1

"The Shellcoder 's Handbook"을 적극 권장합니다. 익스플로잇을 작성할 때 읽은 적이있는 최고의 레퍼런스입니다.

악용 사례 작성에 관심이 있으시면 리버스 엔지니어링 방법을 배워야 할 것입니다. 세계의 99 %는 IDA Pro를 의미합니다. 제 경험상 Chris Eagle의 "The IDA Pro Book"보다 더 훌륭한 IDA Pro 책은 없습니다. 그는 IDA Pro에서해야 할 모든 것을 자세히 설명합니다.

OpenRCE.org에는 역 엔지니어링 커뮤니티가 꽤 있습니다. 수많은 종이와 다양한 유용한 응용 프로그램을 사용할 수 있습니다. 나는이 웹 사이트에 대해 연 2 회의 우수 리버스 엔지니어링 컨퍼런스 인 RECon에서 배웠다. 다음 이벤트는 2010 년이 될 것입니다.

요즘 대부분의 연구는 "열매가 부족합니다". 최근의 보안 컨퍼런스에서 나는 대부분 현대 OS에서 사용할 수있는 보호 장치가 거의없는 모바일 플랫폼 (iPhone, Android 등)의 취약점에 관한 것이 었습니다.

일반적으로 현대적인 악용 사례를 작성하는 방법을 설명하는 참고 문헌은 하나도 없습니다. OS에 내장 된 전체 보호 기능이 있기 때문입니다. 예를 들어, 힙 (heap) 취약점을 발견했다고 가정 해 보겠습니다.하지만 Windows의 성가신 새로운 안전 링크 해제 기능으로 인해 실행을 방해 할 수 있습니다. 당신은 두 천재가이 특징과 found a flaw을 조사했음을 알아야합니다.

연구에 행운을 빕니다. 익스플로잇 작문은 매우 실망스럽고, 매우 보람적입니다!

바하마! 스팸은 내 링크를 모두 게시하지 못하게합니다. 죄송합니다!

+0

당신은 악용 사례를 작성한 적이 없습니다. 코드를 디 컴파일하여 악용 할 필요가 없습니다. 블랙 박스 퍼징은 매우 성공적입니다. 익스플로잇을 작성하려면 디버거가 필요합니다. – rook

2

나는 감명 받았으며, 당신은 멍청한 해커 Like me입니다. 웹 응용 프로그램으로 이동해야합니다. 지난 몇 년 동안 발행 된 CVE 번호의 대다수는 웹 애플리케이션에 사용되었습니다. 이 세 가지 응용 프로그램

http://www.securereality.com.au/studyinscarlet.txt

http://www.ngssoftware.com/papers/HackproofingMySQL.pdf

가 LAMP 스택을 얻고 설치 :

이 두 논문을 읽어

http://sourceforge.net/projects/dvwa/ (PHP)

http://sourceforge.net/projects/gsblogger/ (PHP)

http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project (j2ee)

w3af을 다운로드하고 마스터해야합니다. 그것을위한 플러그인을 작성하십시오. w3af는 놀라운 공격 플랫폼이지만 버그가 있으며 DVWA에 문제가 있습니다. 그레이 스케일을 찢을 것입니다. Acunetix는 훌륭한 상용 스캐너이지만 비싸다.

1

DEP (데이터 실행 방지), NX (실행 없음) 및 특히 실행을 허용하지 않는 기타 보안 강화 기능은 Ret2Lib 또는 Ret2Esp와 같은 다른 악용 기술을 사용하면 쉽게 지나칠 수 있습니다. 응용 프로그램을 컴파일 할 때 일반적으로 다른 라이브러리 (Linux) 또는 DLL (Windows)과 함께 수행됩니다. 이러한 Ret2 * 기술은 단순히 메모리에있는 기존 함수()를 호출합니다.

예를 들어 일반적인 익스플로잇에서 스택을 오버플로 한 다음 NOP 슬 레드, 쉘 코드 또는 쉘 코드가 포함 된 환경 변수의 주소로 반송 주소 (EIP)를 제어 할 수 있습니다. 스택을 실행하지 못하게하는 시스템에서이 익스플로잇을 시도하면 코드가 실행되지 않습니다.대신 리턴 주소 (EIP)를 오버플로하면 system() 또는 execv()와 같은 메모리 내의 기존 함수를 가리킬 수 있습니다. 필요한 레지스터에이 함수가 예상하는 매개 변수를 미리 채우고 스택에서 아무 것도 실행하지 않고/bin/sh를 호출 할 수 있습니다. 자세한 내용은

은 이쪽을 봐 :

http://web.textfiles.com/hacking/smackthestack.txt

관련 문제