2013-01-24 1 views
7

방금 ​​german VB.NET forums을 살펴 보았습니다. 두통을 유발하는 흥미로운 점이있었습니다..NET Framework 어셈블리 유효성 검사

ReflexIL 또는 다른 IL 편집기를 사용하여 .NET Framework 어셈블리를 편집 할 수 있습니다. 우회해야하는 유일한 방법은 어셈블리의 강력한 이름 서명입니다. 어셈블리 IL을 변경 한 후에는 강력한 이름 유효성 검사를 건너 뛰려면 sn.exe -Vr [assemblyname]을 실행해야합니다. 그런 다음 캐시 된 기본 이미지를 지워야합니다. C:\Windows\assembly 디렉토리로 가서 어셈블리와 관련된 모든 이미지를 삭제하십시오. 그런 다음 재부팅하십시오. 로그인 한 후 ngen install [assemblyname]을 실행하십시오. 이제 새로운 네이티브 이미지가 생성됩니다.

이것은 작동합니다. 내 가상 환경 (Windows XP x86)에서이 절차를 확인했습니다. 이제 가장 걱정되는 점은 .NET VerifyHash 또는 VerifyData 메서드를 RSACryptoServiceProvider으로 쉽게 우회 할 수 있다는 점입니다. 이것은 실제로 작동합니다. 내 친구와 내가 테스트 한이 문제 (see screenshots)를 확인할 수 있습니다. 그것은 상당히 쉬웠다. I는 .NET Framework 암호화 클래스에 내장 된 라이센스 시스템을 만들 것입니다 경우

예를 들어, 그것은 을위한 프레임 워크를 사용하여 시스템의 모든 .NET 응용 프로그램을 시스템 전체을 우회 할 수있다. 또한 누구나 로그으로 바꿀 수 있습니다.이 방법은 내가 방금 메서드에 연결하여 호출하는 functios의 입력입니다.

이제 내 질문은 : 이것은 큰 문제가 될 수 있으므로 어떻게해야합니까? 물론 악의적 인 사용자는 응용 프로그램을 편집 할 수 있지만이 시스템 전체를 수행하는 것만 큼 나쁘지는 않습니다. 프레임 워크 체크섬 유효성 검사에 대해 생각해 보았습니다.하지만 .NET Framework에 대해 서로 다른 업데이트가 많이 있기 때문에 불가능한 것 같습니다.

모든 해결책이나 제안? Microsoft는이 문제를 어떤 식 으로든 처리합니까?

+5

이번에는 전체 연습을 다시해야하지만 이번에는 관리자 이름과 암호를 사용하지 않아도됩니다. 위협 분석에서 흔한 오류입니다. 침입자가 핵심을 가지고있을 때 문을 잠글 필요가 없습니다. –

+0

또한 라이센스 시스템은 일반적으로 무의미하다. –

답변

7

공격자가 컴퓨터에 관리자 권한으로 접근하면 (설명 된 공격에 필요함) 공격자가 거의 잃어버린 것입니다. 당신이 할 수있는 모든 일은 공격자가 우회 할 수 있습니다.

이 점 때문에이 유형의 공격으로부터 방어하기 위해 완전히 무의미하다고 생각합니다. 신뢰할 수없고 손상되었을 가능성이있는 컴퓨터를 처리해야한다면 민감한 작업을 수행 할 수 없다는 것을 믿을 수 없으며 서버에서 직접 수행해야합니다.

+0

나는 그것에 대해 무언가를하는 것이 무의미하다는 것을 안다. Microsoft가 왜 그렇게 쉽게 만들었는지에 관심이있었습니다. 그건 내가 찾던 대답이 아니었지만 괜찮아. – nikeee

+2

나는 당신의 추론을 이해하지 못합니다. 이런 종류의 공격을 막는 것이 타당하지 않다고 말하지만 Microsoft는 여전히 자원을 사용해야한다고 생각하십니까? – svick

+0

MS는 .NET Framework 및 CLR의 커널에 액세스 할 수 있으므로 최소한 조금 더 어렵게 만들 수 있습니다. – nikeee

관련 문제