Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Cihaz Temelleri Sızma testleri, güvenlik testinin kritik bir bileşeni olan çeşitli giriş saldırıları biçimleri gerçekleştirir. Saldırı ve Sızma testi, yazılım arabirimlerindeki güvenlik açıklarını belirlemeye yardımcı olabilir.
Penetrasyon
Sızma testleri iki test kategorisi içerir: Fuzz testleri ve G/Ç Casus ve G/Ç Saldırısı testleri. Fuzz testleri, Cihaz Yolu Egzersiz Aracı test aracının da bir özelliğiydi.
| Test | Açıklama |
|---|---|
G/Ç Casusu Devre Dışı Bırak |
1 veya daha fazla cihazda G/Ç Spy'i devre dışı bırakın. Test ikilisi: Devfund_IOSpy_DisableSupport.wsc Test yöntemi: DisableIoSpy Parametreleri: - bkz. Cihaz TemelLeri Test Parametreleri DQ |
Giriş/Çıkış Casus Özelliğine Sahip Cihazı Görüntüle |
I/O Spy etkinleştirilen cihazları görüntüleyin. Test ikili dosyası: Devfund_IOSpy_DisplayEnabledDevices.wsc Test yöntemi: DisplayIoSpyDevices |
G/Ç İ̇zleyici Etkinleştirme |
Bir veya daha fazla cihazda G/Ç Spy etkinleştirin. Test ikilisi: Devfund_IOSpy_EnableSupport.wsc Test yöntemi: EnableIoSpy Parametreleri: - bkz. Cihaz TemelLeri Test Parametreleri DQ DFD - IoSpy veri dosyasının yolunu belirtir. Varsayılan konum %SystemDrive%\DriverTest\IoSpy'dır |
Fuzz Çeşitli API testi |
Fuzz Misc API testleri, sürücünün çekirdek modu sürücülerinden gelen çeşitli yaygın çağrıları işleyip işleyemeyeceğini belirleyen testlerdir. Testler aşağıdaki testleri içerir:
Test ikilisi: Devfund_DevicePathExerciser.dll Test yöntemi: DoMiscAPITest Parametreleri: - bkz. Cihaz TemelLeri Test Parametreleri DoPoolCheck DQ TestDöngüleri ChangeBufferProtectionFlags Kimliğine Bürün FillZeroPageWithNull |
ile Sıfır Uzunluklu Sorgu Testi ile Fuzz Misc API'leri |
Bu test, Fuzz Misc API testiyle aynı testleri gerçekleştirir ve bu kez bir dosyanın genişletilmiş özniteliklerini almaya çalışırken sürücüye boş (sıfır uzunluklu) bir sorgu ve geçersiz bir arabellek adresi geçirir. Test ikilisi: Devfund_DevicePathExerciser.dll Test yöntemi: DoMiscAPIWithZeroLengthTest Parametreleri: - bkz. Cihaz TemelLeri Test Parametreleri DoPoolCheck DQ TestDöngüleri ChangeBufferProtectionFlags Kimliğine Bürün FillZeroPageWithNull |
Fuzz açma kapama testi |
Bu test binlerce oluştur-aç-kapat dizisi gerçekleştirir. Bu test hakkında ayrıntılı bilgi için, Fuzz açma ve kapatma testi hakkındabölümüne bakın. Test ikilisi: Devfund_DevicePathExerciser.dll Test yöntemi: doOpenCloseTest Parametreleri: - bkz. Cihaz TemelLeri Test Parametreleri DoPoolCheck DQ TestDöngüleri ChangeBufferProtectionFlags Kimliğine Bürün FillZeroPageWithNull |
Fuzz Sorgusunu ve Dosya Bilgilerini Ayarla testi |
Bu test, cihazların nesne, dosya ve birim bilgilerini almak ve değiştirmek için çağrılar verir. Sorgu ve Dosya Bilgilerini Ayarla Testsırasında, Fuzz test sorunu, Temel Açık İşlemler ve Fuzz Alt Açılış testi tarafından gerçekleştirilen işlemler de dahil olmak üzere diğer açık işlemler tarafından açılan cihazların nesne, dosya ve birim bilgilerini almak ve değiştirmek için çağırır. Fuzz testi, her sorguyu veya set çağrısını, geçerli bir arabellek ve çeşitli arabellek uzunlukları ile dosya bilgi sınıfları kullanarak en az 1024 kez gerçekleştirir. Her türden bir istek de geçersiz bir arabellek işaretçisi ve sıfır arabellek uzunluğu ile gönderilir. Koruma seçeneğini ayarlayan ChangeBufferProtectionFlags parametresini kullanırsanız, Fuzz testi her sorgudaki arabellekteki güvenlik ayarını değiştirir ve çağrıyı ayarlar. Bu test Fuzz Sub-opens testini de gerçekleştirir. Bu test, ZwQueryInformationFile, ZwSetInformationFile, ZwQueryVolumeInformationFileve ZwSetVolumeInformationFile işlevlerini kullanır. Test ikilisi: Devfund_DevicePathExerciser.dll Test yöntemi: DoQueryAndSetFileInformationTest Parametreleri: - bkz. Cihaz TemelLeri Test Parametreleri DoPoolCheck DQ TestDöngüleri ChangeBufferProtectionFlags Kimliğine Bürün FillZeroPageWithNull |
Fuzz Sorgusunu ve Güvenlik Testini Ayarla |
Bu test, güvenlik tanımlayıcısını almak ve cihazların güvenlik durumunu değiştirmek için çağrılar verir. Sorgusu ve Güvenlik Testini Ayarlasırasında, Fuzz testi, güvenlik tanımlayıcısını almak ve değiştirmek için çağrıları başlatır; bu çağrılar Temel Açık İşlemler ve Fuzz Sub-opens testi tarafından gerçekleştirilen diğer açık işlemler üzerindeki güvenlik durumunu da kapsar. Fuzz testi, geçerli bir test arabelleği ve çeşitli arabellek uzunlukları ile güvenlik bilgisi türleri (OWNER_SECURITY_INFORMATION, GROUP_SECURITY_INFORMATION, DACL_SECURITY_INFORMATION, SACL_SECURITY_INFORMATION ve sırasıyla bilgi türü olmadan) kullanarak her sorgu veya küme çağrısını en az 1024 kez yapar. Her türden bir istek de geçersiz bir arabellek işaretçisi ve sıfır arabellek uzunluğu ile gönderilir. Koruma seçeneğini ayarlayan ChangeBufferProtectionFlags parametresini kullanırsanız, Fuzz testi her sorgudaki arabellekteki güvenlik ayarını değiştirir ve çağrıyı ayarlar. Test ikilisi: Devfund_DevicePathExerciser.dll Test yöntemi: DoQueryAndSetSecurityTest Parametreleri: - bkz. Cihaz TemelLeri Test Parametreleri DoPoolCheck DQ TestDöngüleri ChangeBufferProtectionFlags Kimliğine Bürün FillZeroPageWithNull |
Fuzz Random FSCTL-testi / Fuzz Random IOCTL-testi |
Bu test, DeviceIoControl işlevine belirli bir değer aralığından rastgele seçilen işlev kodları, cihaz türleri, veri aktarım yöntemleri ve erişim gereksinimleriyle bir dizi çağrı verir. Çağrılar, geçerli ve geçersiz arabellek işaretçileri ve uzunlukları ile beraber giriş ve çıkış arabelleklerini ve rastgele oluşturulan içeriği içerir. Rastgele testler sırasında Fuzz testi, belirtilen değer aralığından rastgele seçilen işlev kodları, cihaz türleri, veri aktarımı yöntemleri ve erişim gereksinimleriyle DeviceIoControl işlevine bir dizi çağrı verir. Çağrılar, geçerli ve geçersiz arabellek işaretçileri ve uzunlukları ile beraber giriş ve çıkış arabelleklerini ve rastgele oluşturulan içeriği içerir. Fuzz testi, Temel Açık İşlemler ve ek açık testler sırasında açılan tüm cihazlarda rastgele testler gerçekleştirir. Aşağıdaki parametreleri kullanarak bu testi özelleştirebilirsiniz:
Fuzz testinin, test için rastgele sayılar oluşturmakta kullandığı işlev, rastgele sayı üreten algoritma için tohum numarası olarakbaşlangıç numarasını kullanır. Test koşullarını yeniden oluşturmak için tohum numarası parametresini kullanarak özgün test denemesinde kullanılan tohum numarasını belirtin. Rastgele testin bir parçası olarak Özel Rastgele Test dahildir. Uyarlanmış rastgele test, IOCTL veya FSCTL isteklerine yönelik sürücülerin yanıtını daha ayrıntılı incelemek için rastgele testin sonuçlarını kullanır. Özelleştirilmiş rastgele test yoklamaları, rastgele testin kaçırdığı alanları ve rastgele test çağrılarının döndürdiği duruma göre sürücünün beklendiği gibi yanıt vermediği alanları gösterir. Test ikilisi: Devfund_DevicePathExerciser.dll Test yöntemleri: DoRandomIOCTLTest, DoRandomFSCTLTest Parametreleri: - bkz. Cihaz TemelLeri Test Parametreleri MinInBuffer MaxInBuffer MinOutBuffer MaxOutBuffer MaxRandomCalls MaxTailoredCalls SeedNumber MinDeviceType MaxDeviceType MinFunctionCode MaxFunctionCode DoPoolCheck DQ TestDöngüleri ChangeBufferProtectionFlags Kimliğine Bürün FillZeroPageWithNull |
Fuzz Alt-açılış testi |
Test, cihazın ad alanında nesneleri açmak için hızlı bir dizi çağrı gerçekleştirir. Bu çağrılarda, cihazla başlayan ve farklı uzunluk ve içeriğe sahip rastgele adlar ve saçma dizeler içeren bir yolu iletir. Göreli Açık Testsırasında (Alt Açık Testolarak da bilinir) Fuzz testi, cihazınad alanında nesneleri açmaya çalışır. Bu test sırasında Fuzz testi, Temel Açık İşlemler ve diğer açık işlemleri kullanarak açılan cihazların ad alanında nesneleri açmak için hızlı bir dizi çağrı gerçekleştirir. Bu çağrılarda Fuzz testi, cihazla başlayan ve rastgele adlar ile farklı uzunlukta ve içerikte saçma dizeler içeren bir yolu izler. Bu test, sürücü veya dosya sisteminin ad alanında açık istekleri nasıl yöneteceğini belirler. Özellikle, sürücü kendi ad alanında açık istekleri desteklemiyorsa, yetkisiz erişimi engellemesi gerekir; bunu, ya istekleri başarısız kılarak ya da cihaz nesnesini oluşturmak için IoCreateDevice veya IoCreateDeviceSecure kullandığında FILE_DEVICE_SECURE_OPEN cihaz özelliğini ayarlayarak gerçekleştirebilir. Bir cihazın ad alanı hakkında daha fazla bilgi için bkz. Cihaz Ad Alanı Erişimini Denetleme. Test ikilisi: Devfund_DevicePathExerciser.dll Test yöntemi: DoSubOpensTest Parametreleri: - bkz. Cihaz TemelLeri Test Parametreleri DoPoolCheck DQ TestDöngüleri ChangeBufferProtectionFlags Kimliğine Bürün FillZeroPageWithNull |
Fuzz Alt-Açılır Menüleri Akışlarla Test Etme |
Bu test, cihazda çeşitli adlandırılmış veri akışları açmaya çalışır. Test, bazı cihazlardaki diğer kullanımlar için geçerli olabilecek içeriğe ve karakterlere sahip bir dizi rastgele akış adı kullanır. Streams Testsırasında Fuzz testi cihazda çeşitli adlandırılmış veri akışları açmaya çalışır. Testler, bazı cihazlardaki diğer kullanımlar için geçerli olabilecek içeriğe ve karakterlere sahip bir dizi rastgele akış adı kullanır. Bu test, özellikle sürücü veri akışlarını desteklemeyen veya tahminde bulunmayan bir cihazı dışarı aktarıyorsa, sürücünün veri akışı isteklerini düzgün işleyip işleyemeyeceğini belirler. adlı veri akışı bir dosya nesnesinin özniteliğidir. Dosyanın adını, iki nokta üst üste ve veri akışının adını yazarak adlandırılmış bir veri akışı belirtirsiniz; örneğin, "File01.txt:AccessDate" burada AccessDate adlandırılmış bir veri akışı, yani File01.txt dosyasının özniteliğidir. Fuzz testi, testte kullanılan akış adlarını kaydeder. Test ikilisi: Devfund_DevicePathExerciser.dll Test yöntemi: DoSubOpensWithStreamsTest Parametreleri: - bkz. Cihaz TemelLeri Test Parametreleri DoPoolCheck DQ TestDöngüleri ChangeBufferProtectionFlags Kimliğine Bürün FillZeroPageWithNull |
Fuzz Zero-Length Arabellek FSCTL testi / Fuzz Zero-Length Arabellek IOCTL testi |
Bu test, giriş ve/veya çıkış arabellek uzunlukları 0 olan DeviceIoControl işlevine bir dizi çağrı yapar. Test, farklı işlev kodları, cihaz türleri, veri aktarım yöntemleri ve erişim gereksinimlerini kullanarak farklı dosya sistemi denetim kodları oluşturur. Zero-Length Arabellek Testi sırasında Fuzz testi, giriş ve/veya çıkış arabelleği uzunlukları 0 olanDeviceIoControl işlevine bir dizi çağrı döndürür. Test, farklı işlev kodları, cihaz türleri, veri aktarım yöntemleri ve erişim gereksinimlerini kullanarak değişen G/Ç denetim kodları oluşturur. G/Ç denetim kodlarının içeriği hakkında bilgi için bkz. G/Ç Denetim Kodlarını Tanımlama . Sürücünün geçersiz arabellek işaretçilerini işlemesini test etmek için, bu kullanıcı modu çağrılarındaki arabellek işaretçileri çekirdek sanal adres alanında yüksek olan adresleri (örneğin, 0xFFFFFC00) belirtir). Fuzz testi, temel ve ek açık testler sırasında açılan tüm cihazlarda Zero-Length Buffer testini gerçekleştirir. Çağrılarda kullanılan IOCTL veya FSCTL işlev kodları aralığını belirtmek için MinFunctionCode ve MaxFunctionCode komut parametrelerini kullanarak bu testi özelleştirebilir ve çağrılarda kullanılan cihaz türü aralığını belirtmek için MinDeviceType ve MaxDeviceType . Test ikilisi: Devfund_DevicePathExerciser.dll Test yöntemleri: DoZeroLengthBufferIOCTLTest, DoZeroLengthBufferFSCTLTest Parametreleri: - bkz. Cihaz TemelLeri Test Parametreleri MinDeviceType MaxDeviceType MinFunctionCode MaxFunctionCode DoPoolCheck TestDöngüleri ChangeBufferProtectionFlags Kimliğine Bürün FillZeroPageWithNull |
G/Ç Saldırısını Çalıştırma |
Belirtilen cihaz veya cihazlarda G/Ç Saldırısı gerçekleştirir. Test ikili dosyası: Devfund_IOAttack_DeleteDataFile.wsc Test yöntemi: RunIoAttack Parametreleri: - bkz. Cihaz TemelLeri Test Parametreleri DQ |
Fuzz açma ve kapatma testi hakkında
Fuzz açma ve kapatma testi, belirtilen cihaz veya cihazların örneklerini açma ve kapatmanın birkaç farklı yolunu kullanır: Temel Açık İşlemler, Doğrudan Cihaz Açma İşlemlerive Açma ve Kapatma test.
Temel Açık İşlemler
Temel Açık İşlemlersırasında Fuzz testi, farklı yöntemler ve seçenekler kullanarak belirtilen cihazların veya belirtilen sürücü tarafından dışarı aktarılan cihazların örneklerini tekrar tekrar açar (oluşturur).
Fuzz testi her zaman Temel Açık İşlemleri gerçekleştirir. Bunları seçmeniz gerekmez ve bunları bir test oturumundan dışlayamazsınız.
Fuzz testi, cihaza uygun sistem hizmetlerini (ZwXxx Rutinleri) çağırarak tüm açık işlemleri kullanıcı modunda gerçekleştirir. Açık bir çağrı cihaza bir tanıtıcı döndürürse Fuzz testi, test oturumu için seçilen diğer cihaz testlerini gerçekleştirmek için tutamacı kullanır.
Beş tür Temel Açık İşlem vardır:
Standart olarak açık. Fuzz testi cihazı zaman uyumsuz olarak açar ve yalnızca yerel cihaz adını belirtir.
Eklenmiş bir ters eğik çizgi ile açın. Fuzz testi, cihaz adı için, örneğin \device\cdrom\ gibi, bir ters eğik çizgi ile birlikte bir açık çağrı yapar; bu çağrı, cihazın kök dizini açılıyor gibi kabul edilir.
Bu işlem, sürücü veya dosya sisteminin ad alanında açık istekleri nasıl yöneteceğini belirler. Özellikle, cihaz ad alanında açık istekleri desteklemiyorsa, sürücü istekleri başarısız yaparak veya cihaz nesnesini oluşturmak için IoCreateDeviceveya IoCreateDeviceSecure çağırdığındaFILE_DEVICE_SECURE_OPEN cihaz özelliğini ayarlayarak yetkisiz erişimi engellemelidir.
Adlandırılmış kanal olarak açın. Fuzz testi, cihazı açar ve cihaza yönelik adlandırılmış bir boru hattı kurar. Access parametresi (ShareAccess) başlangıçta okuma ve yazma olarak ayarlanır, ancak istek başarısız olursa bu parametre ayarlanır. Cihaz adlandırılmış kanalları desteklemiyorsa isteğin başarısız olması gerekir.
Mailslot olarak açın. Fuzz testi, cihazı bir posta yuvası olarak açar. Cihaz bu tür bir bağlantıyı desteklemiyorsa istek başarısız olmalıdır.
Ağaç bağlantısı olarak açın. Fuzz testi, cihazı uzak ağ erişiminde kullanılmak üzere ağaç bağlantısı olarak açar. Access parametresi (ShareAccess) başlangıçta okuma ve yazma olarak ayarlanır, ancak istek başarısız olursa bu parametre ayarlanır. Cihaz bu tür bir bağlantıyı desteklemiyorsa istek başarısız olmalıdır.
Açık çağrılarda kullanılan parametreler, cihazın özelliklerini barındırmak ve çağrıların başarılı olma olasılığını sağlamak için farklılık gösterir. Örneğin, çağrı cihazın güvenlik gereksinimlerini karşılamadığı için temel bir açma işlemi başarısız olursa, Fuzz testi daha az erişim isteğiyle açma işlemini yineler. Örneğin, yazma erişimi isteyen bir açık işlem bir güvenlik ihlali hatası döndürürse, açma işlemi okuma erişimi isteğiyle yinelenir.
Doğrudan Cihaz Açma İşlemleri
Doğrudan Cihaz Açma İşlemlerisırasında, Fuzz testi kapsamında cihaz, bir dosya sisteminde dosya şeklinde değil, doğrudan bir cihaz olarak açılır. Doğrudan Cihaz Açma İşlemleri her zaman eşzamanlı olur. Çağrı başarılı olursa, Fuzz testi, sağlanan işaretçiyi kullanarak seçilen diğer testleri gerçekleştirir.
Testi Açma ve Kapatma
Açma ve Kapatma Testisırasında Fuzz testi, her biri binlerce oluşturma-açma-kapatma dizisi gerçekleştiren birkaç iş parçacığı oluşturur. Bu, sürücünün normalde basit ve beklenen çağrıların olağanüstü bir hacmini işleyebilme yeteneğini test ediyor.
Açma ve Kapatma Testi, Temel Açık İşlemler ve Eklenen Ters Eğik Çizgi ile Aç testlerinde kullanılan seçeneklerin aynısını kullanır ve bu testlerden hemen önce gerçekleştirilir.
İlgili konular
Visual Studio kullanarak bir sürücüyü çalışma zamanında nasıl test edersiniz?
Cihaz TemelLeri testlerini seçme ve yapılandırma
Sağlanan WDTF Basit G/Ç eklentileri
Komut İstemi'nde çalışma zamanı esnasında bir sürücüyü test etme