Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
IOSSecuritySuite — Biblioteca Swift de segurança da plataforma iOS e antimanipulação | Kitploit
Ferramentas/GitHubGitHub/securing/iossecuritysuite
Segurança iOSEngenharia ReversaSegurança MóvelAprendizado e Educação
GitHubsecuring/iossecuritysuite

IOSSecuritySuite

Biblioteca Swift de segurança da plataforma iOS e antimanipulação

Ver Repositório
2.7k344111há 2 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Site
Compartilhar
## ⭐️ Você quer se tornar um Engenheiro de Segurança de Aplicativos iOS certificado? ⭐️

Confira nosso curso prático e totalmente online em: [https://courses.securing.pl/courses/iase](https://courses.securing.pl/courses/iase?utm_source=githubiosss&utm_medium=githubiosss&utm_campaign=githubiosss&utm_id=githubiosss)

![Logotipo do iASE](https://assets.kitploit.com/production/public/readmes/5249/32a5ed83a074890e108696e8d409a60131045c9fb4fbaeec742c8a5cc505ddb3.png)


## Descrição do ISS

![Logotipo do ISS](https://assets.kitploit.com/production/public/readmes/5249/f1509c19032617bb06212f44e6b353e12a142811dcecdc783b8e266836f1ed72.png)
### por [@_r3ggi](https://twitter.com/_r3ggi)

🌏 O iOS Security Suite é uma biblioteca de segurança de plataforma e anti-adulteração avançada e fácil de usar, escrita em Swift puro! Se você está desenvolvendo para iOS e deseja proteger seu aplicativo de acordo com o padrão OWASP [MASVS](https://github.com/OWASP/owasp-masvs), capítulo v8, esta biblioteca pode economizar muito tempo. 🚀

O que o ISS detecta:

* Jailbreak 🧨
* Depurador anexado 👨🏻‍🚀
* Se um aplicativo foi executado em um emulador 👽
* Ferramentas comuns de engenharia reversa em execução no dispositivo 🔭

## Configuração
Existem 4 maneiras de começar a usar o IOSSecuritySuite

### 1. Adicionar fonte
Adicione os arquivos `IOSSecuritySuite/*.swift` ao seu projeto

### 2. Configurar com CocoaPods
`pod 'IOSSecuritySuite'`

### 3. Configurar com Carthage
`github "securing/IOSSecuritySuite"`

### 4. Configurar com Swift Package Manager
```swift
.package(url: "https://github.com/securing/IOSSecuritySuite.git", from: "1.5.0")
```

### Atualizar o Info.plist
Após adicionar o ISS ao seu projeto, você também precisará atualizar seu Info.plist principal. Há uma verificação no módulo de detecção de jailbreak que usa o método `canOpenURL(_:)` e [requer](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl) a especificação das URLs que serão consultadas.

```xml
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>undecimus</string>
    <string>sileo</string>
    <string>zbra</string>
    <string>filza</string>
</array>
```

### Preços

Consulte nosso contrato de licença EULA para mais detalhes.

Resumo:
Se sua empresa possui:
* 0-99 pessoas - **uso gratuito**
* 100-1000 - 3k EUR/ano
* 1000+ - 10k EUR/ano

Se você quiser vender um módulo que utiliza o iOS Security Suite (não usado diretamente no seu aplicativo) - 10k EUR/ano

### Aviso

O iOS Security Suite deve ser usado no iOS/iPadOS. Não deve ser usado em Macs com Apple Silicon.

## Como usar

### Módulo de detecção de Jailbreak

* **O método mais simples** retorna True/False se você apenas deseja saber se o dispositivo está com jailbreak ou não

```Swift
if IOSSecuritySuite.amIJailbroken() {
	print("This device is jailbroken")
} else {
	print("This device is not jailbroken")
}
```

* **Detalhado**, se você também quiser saber quais indicadores foram identificados

```Swift
let jailbreakStatus = IOSSecuritySuite.amIJailbrokenWithFailMessage()
if jailbreakStatus.jailbroken {
	print("This device is jailbroken")
	print("Because: \(jailbreakStatus.failMessage)")
} else {
	print("This device is not jailbroken")
}
```
A failMessage é uma String contendo indicadores separados por vírgula, conforme mostrado no exemplo abaixo:
`sileo:// URL scheme detected, Suspicious file exists: /Library/MobileSubstrate/MobileSubstrate.dylib, Fork was able to create a new process`

* **Detalhado e filtrável**, se você também quiser, por exemplo, identificar dispositivos que já tiveram jailbreak no passado, mas agora estão sem

```Swift
let jailbreakStatus = IOSSecuritySuite.amIJailbrokenWithFailedChecks()
if jailbreakStatus.jailbroken {
   if (jailbreakStatus.failedChecks.contains { $0.check == .existenceOfSuspiciousFiles }) && (jailbreakStatus.failedChecks.contains { $0.check == .suspiciousFilesCanBeOpened }) {
         print("This is real jailbroken device")
   }
}
```

### Módulo de detecção de depurador
```Swift
let amIDebugged: Bool = IOSSecuritySuite.amIDebugged()
```

### Negar depurador completamente
```Swift
IOSSecuritySuite.denyDebugger()
```

### Módulo de detecção de emulador
```Swift
let runInEmulator: Bool = IOSSecuritySuite.amIRunInEmulator()
```

### Módulo de detecção de ferramentas de engenharia reversa

* **O método mais simples** retorna True/False se você apenas deseja saber se o dispositivo tem evidências de engenharia reversa

```Swift
if IOSSecuritySuite.amIReverseEngineered() {
  print("This device has evidence of reverse engineering")
} else {
  print("This device hasn't evidence of reverse engineering")
}
```

* **Detalhado e filtrável**, se você também quiser a lista de verificações realizadas

```Swift
let reverseStatus = IOSSecuritySuite.amIReverseEngineeredWithFailedChecks()
if reverseStatus.reverseEngineered {
   // check for reverseStatus.failedChecks for more details
}
```

### Módulo de detecção de proxy do sistema

Agora você também pode detectar se um aplicativo está conectado a uma VPN
```Swift
let amIProxied: Bool = IOSSecuritySuite.amIProxied(considerVPNConnectionAsProxy: true)
```

### Módulo de detecção do modo de bloqueio
```Swift
let amIInLockdownMode: Bool = IOSSecuritySuite.amIInLockdownMode()
```

## Funcionalidades experimentais

### Módulo de detecção de hook em tempo de execução
```Swift
let amIRuntimeHooked: Bool = amIRuntimeHook(dyldWhiteList: dylds, detectionClass: SomeClass.self, selector: #selector(SomeClass.someFunction), isClassMethod: false)
```
### Módulo de negação de hook de símbolo
```Swift
// If we want to deny symbol hook of Swift function, we have to pass mangled name of that function
denySymbolHook("$s10Foundation5NSLogyySS_s7CVarArg_pdtF")   // denying hooking for the NSLog function
NSLog("Hello Symbol Hook")
     
denySymbolHook("abort") 
abort()
```

### Módulo de detecção de MSHook
```Swift
// Function declaration
func someFunction(takes: Int) -> Bool {
	return false
} 

// Defining FunctionType : @convention(thin) indicates a “thin” function reference, which uses the Swift calling convention with no special “self” or “context” parameters.
typealias FunctionType = @convention(thin) (Int) -> (Bool)

// Getting pointer address of function we want to verify
func getSwiftFunctionAddr(_ function: @escaping FunctionType) -> UnsafeMutableRawPointer {
	return unsafeBitCast(function, to: UnsafeMutableRawPointer.self)
}

let funcAddr = getSwiftFunctionAddr(someFunction)
let amIMSHooked = IOSSecuritySuite.amIMSHooked(funcAddr)
```

### Módulo de negação de MSHook
```Swift
// Function declaration
func denyDebugger(value: Int) {
}

// Defining FunctionType : @convention(thin) indicates a “thin” function reference, which uses the Swift calling convention with no special “self” or “context” parameters.
typealias FunctionType = @convention(thin) (Int)->()

// Getting original function address
let funcDenyDebugger: FunctionType = denyDebugger 
let funcAddr = unsafeBitCast(funcDenyDebugger, to: UnsafeMutableRawPointer.self)


if let originalDenyDebugger = denyMSHook(funcAddr) {
// Call the original function with 1337 as Int argument
     unsafeBitCast(originalDenyDebugger, to: FunctionType.self)(1337)
 } else {
     denyDebugger()
 }
```

### Módulo de verificação de integridade de arquivos

```Swift
// Determine if application has been tampered with 
if IOSSecuritySuite.amITampered([.bundleID("biz.securing.FrameworkClientApp"),
    .mobileProvision("2976c70b56e9ae1e2c8e8b231bf6b0cff12bbbd0a593f21846d9a004dd181be3"),
    .machO("IOSSecuritySuite", "6d8d460b9a4ee6c0f378e30f137cebaf2ce12bf31a2eef3729c36889158aa7fc")]).result {
    print("I have been Tampered.")
}
else {
    print("I have not been Tampered.")
}

// Manually verify SHA256 hash value of a loaded dylib
if let hashValue = IOSSecuritySuite.getMachOFileHashValue(.custom("IOSSecuritySuite")), hashValue == "6d8d460b9a4ee6c0f378e30f137cebaf2ce12bf31a2eef3729c36889158aa7fc" {
    print("I have not been Tampered.")
}
else {
    print("I have been Tampered.")
}
 
// Check SHA256 hash value of the main executable
// Tip: Your application may retrieve this value from the server
if let hashValue = IOSSecuritySuite.getMachOFileHashValue(.default), hashValue == "your-application-executable-hash-value" {
    print("I have not been Tampered.")
}
else {
    print("I have been Tampered.")
}
```

### Módulo de detecção de breakpoint

```Swift
func denyDebugger() {
    // Set breakpoint here
}
     
typealias FunctionType = @convention(thin) ()->()
let func_denyDebugger: FunctionType = denyDebugger   // `: FunctionType` is a must
let func_addr = unsafeBitCast(func_denyDebugger, to: UnsafeMutableRawPointer.self)
let hasBreakpoint = IOSSecuritySuite.hasBreakpointAt(func_addr, functionSize: nil)

if hasBreakpoint {
    print("Breakpoint found in the specified function")
} else {
    print("Breakpoint not found in the specified function")
}
```

### Módulo de detecção de watchpoint

```Swift
// Set a breakpoint at the testWatchpoint function
func testWatchpoint() -> Bool{
		// lldb: watchpoint set expression ptr
    var ptr = malloc(9)
    // lldb: watchpoint set variable count
    var count = 3
    return IOSSecuritySuite.hasWatchpoint()
}
```



## Considerações de segurança

Antes de usar esta e outras ferramentas de verificação de segurança de plataforma, você precisa entender que:

* Incluir esta ferramenta no seu projeto não é a única coisa que você deve fazer para melhorar a segurança do seu aplicativo! Você pode ler um whitepaper geral de segurança móvel [aqui](https://www.securing.biz/en/mobile-application-security-best-practices/index.html).
* A detecção de se um dispositivo está com jailbreak é feita localmente no dispositivo. Isso significa que qualquer detector de jailbreak pode ser contornado (até mesmo este)!
* O código Swift é considerado mais difícil de manipular dinamicamente do que Objective-C. Como esta biblioteca foi escrita em Swift puro, os métodos do IOSSecuritySuite não devem ser expostos ao runtime do Objective-C (o que torna mais difícil contorná-lo ✅). Você precisa saber que um atacante ainda pode usar MSHookFunction/MSFindSymbol em símbolos Swift e alterar dinamicamente o fluxo de execução do código Swift.

## Contribuição ❤️
Sim, por favor! Se você tem uma ideia melhor ou apenas deseja melhorar este projeto, entre em contato comigo no [Twitter](https://twitter.com/_r3ggi) ou [LinkedIn](https://www.linkedin.com/in/wojciech-regula/). Pull requests são mais que bem-vindos!

### Agradecimentos especiais: 👏🏻

* [kubajakowski](https://github.com/kubajakowski) por apontar o problema com o método `canOpenURL(_:)`
* [olbartek](https://github.com/olbartek) pela revisão de código e pull request 
* [benbahrenburg](https://github.com/benbahrenburg) por várias melhorias no ISS
* [fotiDim](https://github.com/fotiDim) por adicionar novos caminhos de arquivo para verificar
* [gcharita](https://github.com/gcharita) por adicionar suporte ao Swift Package Manager
* [rynaardb](https://github.com/rynaardb) por criar o método `amIJailbrokenWithFailedChecks()`
* [undeaDD](https://github.com/undeaDD) por várias melhorias no ISS
* [fnxpt](https://github.com/fnxpt) por adicionar múltiplas detecções de JB
* [TannerJin](https://github.com/TannerJin) pelos módulos de detecção de MSHook, RuntimeHook, SymbolHook e Watchpoint
* [NikoXu](https://github.com/NikoXu) por adicionar o módulo de integridade de arquivos
* [hellpf](https://github.com/hellpf) por corrigir um problema de socket pendente
* [Ant-tree](https://github.com/Ant-tree) por melhorar a resistência a hooks
* [izmcm](https://github.com/izmcm) por implementar o método `amIReverseEngineeredWithFailedChecks()`
* [sanu](https://github.com/sanu) por fornecer novas verificações de arquivos
* [marsepu](https://github.com/marsepu) por um PR bem feito com novas melhorias
* [mkj-is](https://github.com/mkj-is) por um PR melhorando o desempenho do ISS 🚄
* [LongXiangGuo](https://github.com/LongXiangGuo) por um PR adicionando o manifesto de privacidade
* [Coeur](https://github.com/Coeur) por melhorias e correções de bugs no ISS
* [Adobels](https://github.com/Adobels) por ajustar o ISS aos novos requisitos da Apple


## A FAZER

* [ ] Pesquisar detecção do Installer5 e Zebra Package Manager (alternativas ao Cydia)
* [ ] Detector de hidejb do Dopamine

## Licença
Consulte o arquivo LICENSE.

## Referências
Durante a criação desta ferramenta, utilizei:

* 🔗 https://github.com/TheSwiftyCoder/JailBreak-Detection
* 🔗 https://github.com/abhinashjain/jailbreakdetection 
* 🔗 https://gist.github.com/ddrccw/8412847
* 🔗 https://gist.github.com/bugaevc/4307eaf045e4b4264d8e395b5878a63b
* 📚 "iOS Application Security" por David Thiel
Baixar ferramenta