방금 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는이 문제를 어떤 식 으로든 처리합니까?
이번에는 전체 연습을 다시해야하지만 이번에는 관리자 이름과 암호를 사용하지 않아도됩니다. 위협 분석에서 흔한 오류입니다. 침입자가 핵심을 가지고있을 때 문을 잠글 필요가 없습니다. –
또한 라이센스 시스템은 일반적으로 무의미하다. –