2010-09-27 5 views
17

나는 취약점을 발견하는 데 사용되는 기술을 알고 싶어합니다. 나는 버퍼 오버 플로우, 포맷 문자열 익스플로잇, ecc에 관한 이론을 알고 있으며, 나는 또한 그것들 중 일부를 썼다. 그러나 나는 여전히 효과적인 방법으로 취약점을 찾는 법을 깨닫지 못합니다.소프트웨어의 취약점 발견

나는 마술 지팡이를 찾고 있지 않다. 나는 그것에 대한 가장 일반적인 기법만을 찾고있다. 나는 전체 소스를 보는 것이 당신이 소스에 접근 할 수 있다고 인정하는 일부 프로젝트의 서사시 작업이라고 생각한다. 수작업으로 입력을 모방하는 것은 너무 편하지 않습니다. 그래서 도움이되는 도구에 대해 궁금합니다.

예.

dev 팀이 iPhone을 너무 빨리 감옥의 취약점을 발견하는 방법을 알 수 없습니다. 그들은 소스 코드가 없으며 프로그램을 실행할 수 없으며 작은 숫자의 프로그램이 있기 때문에 많은 보안 구멍이 필요하지는 않습니다. 그래서 이런 종류의 취약점을 찾는 방법은 이니?

미리 감사드립니다.

답변

3

하위 계층에서 수동으로 메모리를 검사하면 매우 드러납니다. Visual Studio와 같은 도구로 확실하게 메모리를 볼 수 있습니다. 누군가가 실행하는 명령과 메모리에 저장하는 데이터 구조를 기반으로 애플리케이션을 엄숙하게 재구성하는 도구를 작성했다고 생각합니다.

웹에서 나는 작업이 발생한 순서 (예 : 온라인 트랜잭션)를 간단히 뒤집어서 많은 시퀀스 관련 악용 사례를 발견했습니다. 서버는 상태가 유지되지만 클라이언트는 상태 비 저장이므로 다른 시퀀스를 에뮬레이션하여 잘못 설계된 프로세스를 신속하게 활용할 수 있습니다.

발견의 속도에 관해서는 : 나는 양이 종종 훌륭하다고 생각합니다. 소프트웨어는 좋은 것조차도 백만 명의 지루하고 궁금한/동기가있는 사람들의 손에 넣으십시오. 취약점은 발견했다. 문 밖으로 제품을 얻으려면 엄청난 서두가 있습니다.

0

버퍼 오버 플로우 및 형식 문자열 익스플로잇 외에도 코드 삽입의 비트를 읽을 수 있습니다. (웹/DB와 관련된 많은 정보를 얻을 수 있지만 더 깊게 파고들 것입니다.) AFAIK는 iThingies를 jailbreaking하는 데 막대한 힘이되었습니다. Saurik의 모바일 기판 허용 (-ed?) 당신은 제 3 자 .dylibs를로드하고 그 안에 포함 된 코드를 호출하십시오.

2

기업이 안전한 소프트웨어를 생산하고 유지 관리하기 위해 많은 돈을 지출하므로 효율적인 방법이 없습니다. 이상적으로는 소프트웨어 보안에 대한 작업이 완제품의 취약성을 찾는 것으로 시작하지는 않습니다. 소프트웨어가 없어지면 많은 음란물이 이미 제거되었습니다.

질문으로 돌아 가기 : 사용중인 항목 (작업 바이너리, 전체/부분 소스 코드 등)에 따라 다릅니다. 반면에 어떤 취약점도 찾아 내지 못하고 있습니다 (예 : 감사의 클라이언트 또는 소프트웨어 소유자). 권리?

이렇게하면 입력해야하는 기능과 걱정해야 할 기능을 이해하는 데 도움이됩니다. 일단 당신이 이것을 지역화했다면, 당신은 이미 소프트웨어의 품질에 대한 느낌을 가지고 있을지도 모릅니다. 아주 좋지 않다면 아마도 퍼지 (fuzzing)가 당신에게 어떤 버그를 발견 할 것입니다. 그렇지 않으면 이러한 함수를 이해하고 코드가 어떤 방식 으로든 전복 될 수 있는지 여부를 이해하기 위해 코드 내에서 입력이 어떻게 사용되는지 이해해야합니다.

몇 가지 경험을 통해 각 작업을 수행 할 때의 노력과 추월시기를 늘릴 수 있습니다. 예를 들어, 몇 가지 나쁜 습관이 사용되는 것을 본다면, 더 깊이 파헤쳐보십시오.암호화가 처음부터 구현되는 것을 보게되면 더 깊이 파헤쳐보십시오. 기타