Como ativar o OpenSSh no iOS 10.2

9

Consegui desbloquear meu iPhone 6s com sucesso no iOS 10.2.

Instalei o OpenSSH através do Cydia e alterei minha senha padrão via MobileTerminal.

O único problema é que, quando corro ssh root@my_iPhone_ip_addr, ele simplesmente trava e nunca se conecta.

Eu tentei o aplicativo trampolim SSH alternar, no entanto, ainda trava.

Existe uma maneira de habilitar o SSH no meu telefone por meio de um comando do terminal ou de alguma outra maneira?

iProgram
fonte
Eu uso iPhone túnel para ligar para o meu dispositivo via ssh através de USB: code.google.com/archive/p/iphonetunnel-mac/downloads
newenglander

Respostas:

9

O OpenSSH não é compatível com o iOS 10.2 e quebrará as coisas em versões posteriores do jailbreak. Você deve desinstalar o OpenSSH e o OpenSSL (dependência).

yalu102 vem com dropbear.

grg
fonte
Este tweet foi feito antes do lançamento do 10.2 Jailbreak, então eu tenho certeza que está se referindo ao altamente instável 10.1.1 Jailbreak. Você tem uma fonte atualizada?
Wowfunhappy
Por favor, siga o conselho do grgarside: desinstale o OpenSSH. Veja minha postagem para obter instruções passo a passo para recuperar seu ssh.
Colin
6

Você deve usar o Dropbear embutido. A partir do Yalu Beta 6, você precisa primeiro SSH sobre USB. Depois de alterar sua senha, você poderá ativar o Dropbear em outras interfaces.

Linux ou macOS:

  1. Faça o download dos binários gandalf (eu não compilei a sorte) na página do ocaml-usbmux github. macOS: gandalf_darwin_10_11_x86_64
  2. Conecte seu dispositivo via cabo USB e procure por ele.
  3. Coloque o udid em um arquivo de mapeamento. Verifique se o device_port 22 (ssh) está mapeado!
  4. Execute o gandalf com seu arquivo de mapeamento
  5. SSH para o local_port correspondente ao device_port 22 no seu arquivo de mapeamento.
  6. Efetue login com a senha alpina.
  7. MUDE SUA SENHA!!!

Varredura

$ gandalf

Arquivo de mapeamento de amostra

[{"udid":"9cdfac9f74c5e18a6eff3611c0927df5cf4f2eca",
  "name":"i11", "forwarding": [{"local_port":2000, "device_port":22},
                               {"local_port":3000, "device_port":1122}]
                               }]

Execute Gandalf com arquivo de mapeamento

$ gandalf -m myMappingFile.txt

SSH para a porta 2000

$ ssh mobile@localhost -p 2000

Alterar senha (s)

$ passwd
$ su
$ passwd root

Agora que você está no seu dispositivo iOS ( sua senha foi alterada, certo? ), Você pode ativar o Dropbear em outras interfaces da seguinte maneira.

  1. Crie um arquivo LaunchDaemon para iniciar uma segunda instância do Dropbear.
  2. Reinicie ou use launchctl load

Crie o arquivo LaunchDaemon:

$ cd /Library/LaunchDaemons
$ cat <<EOF > ssh10022.plist

Cole isso no terminal:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>SSH port 10022</string>
    <key>Program</key>
    <string>/usr/local/bin/dropbear</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/dropbear</string>
        <string>-F</string>
        <string>-R</string>
        <string>-p</string>
        <string>10022</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

Digite Ctrl-D para finalizar a entrada. Isso agora cria o arquivo ssh10022.plist

Reinicie ou use o launchctl

launchctl load /Library/LaunchDaemons/ssh10022.plist

Problemas:

O Dropbear não gosta das permissões padrão do iOS no diretório inicial do celular, portanto, a autenticação de chave SSH não funciona. Após cada reinicialização, tenho que fazer login com senha e corrigir as permissões:

$ chmod go-w /var/mobile

Para depurar o Dropbear: Redirecione os logs do Dropbear para o stderr (o exemplo abaixo executa mais uma instância na porta 10023).

$ dropbear -E -p 10023
Colin
fonte
6

Você não pode se conectar ao ssh over wifi com o jailbreak 10.2. Você precisa ssh sobre USB. São várias opções, mas a mais fácil é usar iproxy.

  1. Instale o iproxy

    brew install libimobiledevice

  2. No terminal, execute agora o seguinte comando.

    iproxy 2222 22

    Isso permitirá que você encaminhe todo o tráfego da porta 2222 para a porta 22 através de USB

  3. Agora você pode se conectar ao iPhone executando ssh

    ssh root@localhost -p 2222

Observe que você localhostnão se conecta ao endereço IP do seu telefone. Se tudo correu bem, você deve receber o prompt ssh.

Se não funcionar, verifique se o ssh está em execução no iPhone executando

telnet <iphone-ip-address-here> 22

Se você não conseguir se conectar, instale o opensshpacote do Cydia.

Joseph
fonte
Provavelmente não deveria sugerir a instalação do OpenSSH porque o autor do jailbreak, qwertyoruiop, diz especificamente para não instalar o OpenSSH.
Colin
1
Eu não poderia conectar usando Dropbear, no meu caso eu tive que instalar o OpenSSHpacote, que é a razão pela qual eu sugeri que, como as outras instruções parecem basear-se no jailbreak beta
Joseph
Isso não é verdade. Você pode conectar-se no SSH via Wifi com o Jailbreak 10.2. Requer apenas que você atualize a configuração do dropbear para ouvir em todas as interfaces.
Doug
@Doug edite a resposta e coloque as instruções para ativar o SSH por wifi.
Joseph
3

@ Colin Tem uma ótima resposta para o jailbreak de Yulu, mas eu fiz as coisas de maneira um pouco diferente que pode ser útil para as pessoas. Sua resposta se concentra na criação de um novo daemon com um novo nome, para que você efetivamente tenha dois daemons executando o SSH. Um para o USB e outro para outras conexões TCP. Eu queria um ouvinte que escutasse em todas as interfaces. Eu também estava no Windows e precisava de algo que funcionasse com isso, o que Galdolf não. Como resultado, fui com um script Python , que bifurquei para garantir que ele nunca desapareça.

Para usar isso, execute:

python usbmuxd\pythonclient\tcprelay.py -t 22:2222

O mapa acima mapeia a porta local 2222 para a porta remota 22. Uma vez configurado, você pode usar seu utilitário SSH favorito para conectar-se. Eu usei o Putty .

  • Host: 127.0.0.1
  • Porto: 2222

Nome de usuário padrão "root" e senha "alpine", mas também é possível usar um nome de usuário "mobile" e uma senha "alpine".

NOTA: Se você não souber a senha root, use o Filza para alterar as permissões de /etc/master.passwd para 666 e, em seguida, via SSH como usuário móvel ou utilizando seu editor de arquivos favorito, edite esse arquivo para copiar o hash de "mobile" para "root" para tornar as senhas iguais. (O hash para "alpino" é "/ smx7MYTQIi2M", se necessário). Você deve conseguir fazer o login como root ou usar o su.

Após o login, você encontrará as cópias do droplist.plist que estão atualmente em sua máquina. Provavelmente, existem maneiras mais eficientes de fazer isso, mas usei o seguinte comando:

find . | grep dropbear.plist

Qual rendeu:

./Library/LaunchDaemons/dropbear.plist
./private/var/containers/Bundle/Application/023FF836-8A0A-4593-A578-6801F2A3F34D/yalu102.app/dropbear.plist

A primeira entrada é o daemon ativo, mas a segunda é mais importante. É o daemon que o Yulu instala toda vez que você executa o jailbreak (que você tem a ver com cada reinicialização). Se você editar apenas /Library/LaunchDaemons/dropbear.plist, ele será substituído toda vez que você reiniciar.

Como resultado, editaremos o que vem com o Yulu, mas se você criar o arquivo, perceberá que está em um formato PLIST binário. Para corrigir isso, precisamos do Erica Utilities para obter plutil. Você pode então executar:

plutil -xml dropbear.plist

Isso converterá o formato dropbear.plist para XML. Feito isso, você pode editar o arquivo em qualquer editor de texto. Eu usei o nano para fazer a edição real.

por exemplo

nano dropbear.plist

Ao editar o arquivo, você quer se livrar do "localhost:" da última entrada de string. Isso fará com que o ouvinte seja executado em todas as interfaces, em vez de apenas na interface de loopback (disponível apenas via USB). Como resultado, seu arquivo se torna:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>ShaiHulud</string>
        <key>Program</key>
        <string>/usr/local/bin/dropbear</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/local/bin/dropbear</string>
                <string>-F</string>
                <string>-R</string>
                <string>-p</string>
                <string>22</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

Depois de fazer isso, você desejará colocar o arquivo novamente em formato binário:

plutil -binary dropbear.plist

Neste ponto, sugiro que você reinicie o dispositivo e valide se o arquivo dropbear.plist do Yalu é copiado corretamente quando você faz o jailbreak novamente:

por exemplo

reboot

Após uma reinicialização, você poderá SSH utilizando o endereço IP do seu telefone e a porta padrão 22.

por exemplo

  • Anfitrião: (IP em Configurações -> WiFi -> (NOME WIFI)
  • Porto: 22
Doug
fonte
Obrigado por explicar todos os seus passos! Isso torna muito mais à prova de futuro. Eu tentei> encontrar. | grep dropbear.plist para encontrar a configuração do dropbear no jailbreak do LiberIOS, mas não tenho idéia de onde eles colocaram a configuração.
Colin
1
Tente navegar para: / Library / LaunchDaemons / e veja se consegue descobrir o nome que eles usaram lá. Muito provavelmente eles usaram o mesmo nome em todos os lugares. Essa pasta é onde estão todos os scripts do daemon; portanto, se eles tiverem um daemon existente, eles deverão ser referenciados lá.
Doug
Esqueceu-se de cd / antes de executar o find. | grep dropbear.plist. Duh.
Colin
Isso me fez perceber que poderíamos sugerir hackear o Dropbear.plist no IPA Yalu antes de carregá-lo no dispositivo com o Impactor. Mas, novamente, embora se possa editar diretamente arquivos binários .plist com o Xcode no macOS, não sei se existem esses recursos no Windows ou Linux.
Colin
1
Sim, isso pode ser feito: forensicswiki.org/wiki/Converting_Binary_Plists
Doug