Jak włączyć OpenSSh na iOS 10.2

9

Z powodzeniem zepsułem mój iPhone 6s działający na iOS 10.2.

Zainstalowałem OpenSSH za pośrednictwem Cydii i zmieniłem moje domyślne hasło za pomocą MobileTerminal.

Jedynym problemem jest to, że kiedy uruchamiam ssh root@my_iPhone_ip_addr, po prostu się zawiesza i nigdy się nie łączy.

Wypróbowałem aplikację SSH do przełączania trampoliny, jednak nadal się ona zawiesza.

Czy istnieje sposób, w jaki mogę włączyć SSH w telefonie za pomocą polecenia terminalu lub w inny sposób?

iProgram
źródło
Korzystam z iPhone Tunnel, aby połączyć się z moim urządzeniem przez ssh przez USB: code.google.com/archive/p/iphonetunnel-mac/downloads
newenglander

Odpowiedzi:

9

OpenSSH nie jest kompatybilny z iOS 10.2 i psuje rzeczy w późniejszych wydaniach jailbreak. Należy odinstalować zarówno OpenSSH, jak i OpenSSL (zależność).

yalu102 pochodzi z dropbear.

grg
źródło
Ten tweet powstał przed wydaniem Jailbreaka 10.2, więc jestem prawie pewien, że odnosi się do bardzo niestabilnego Jailbreaka 10.1.1. Czy masz zaktualizowane źródło?
Wowfunhappy
Postępuj zgodnie z radą grgarside: odinstaluj OpenSSH. Zobacz mój post, aby uzyskać instrukcje krok po kroku, jak odzyskać swój ssh.
Colin,
6

Powinieneś użyć wbudowanego Dropbear. Począwszy od Yalu Beta 6, musisz najpierw SSH przez USB. Następnie po zmianie hasła możesz włączyć Dropbear na innych interfejsach.

Linux lub macOS:

  1. Pobierz pliki binarne Gandalf (kompilacja przy braku szczęścia) ze strony github ocaml-usbmux . macOS: gandalf_darwin_10_11_x86_64
  2. Podłącz urządzenie kablem USB i wyszukaj je.
  3. Umieść udid w pliku mapowania. Upewnij się, że urządzenie device_port 22 (ssh) jest zmapowane!
  4. Uruchom gandalf z plikiem mapowania
  5. SSH do portu lokalnego odpowiadającego portowi urządzenia 22 w pliku odwzorowania.
  6. Zaloguj się przy użyciu hasła alpine.
  7. ZMIEŃ SWOJE HASŁO!!!

Skanowanie

$ gandalf

Przykładowy plik mapowania

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

Uruchom Gandalfa z plikiem mapowania

$ gandalf -m myMappingFile.txt

SSH do portu 2000

$ ssh mobile@localhost -p 2000

Zmień hasło

$ passwd
$ su
$ passwd root

Teraz, gdy jesteś na swoim urządzeniu z iOS ( twoje hasło zostało zmienione, prawda? ) Możesz włączyć Dropbear na innych interfejsach w następujący sposób.

  1. Utwórz plik LaunchDaemon, aby uruchomić drugą instancję Dropbear.
  2. Uruchom ponownie lub użyj launchctl load

Utwórz plik LaunchDaemon:

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

Wklej to do terminala:

<?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>

Wpisz Ctrl-D, aby zakończyć wprowadzanie. To tworzy teraz plik ssh10022.plist

Uruchom ponownie lub użyj launchctl

launchctl load /Library/LaunchDaemons/ssh10022.plist

Problemy:

Dropbear nie lubi domyślnych uprawnień iOS na mobilny katalog domowy, więc uwierzytelnianie za pomocą klucza SSH nie działa. Po każdym ponownym uruchomieniu muszę się zalogować za pomocą hasła i naprawić uprawnienia:

$ chmod go-w /var/mobile

Aby debugować Dropbear: Przekieruj dzienniki Dropbear do stderr (w poniższym przykładzie uruchomiono kolejną instancję na porcie 10023).

$ dropbear -E -p 10023
Colin
źródło
6

Nie można połączyć się z ssh przez Wi-Fi za pomocą jailbreak 10.2. Musisz ssh przez USB. Istnieje kilka opcji, ale najłatwiej jest z nich skorzystać iproxy.

  1. Zainstaluj iproxy

    brew install libimobiledevice

  2. Na terminalu uruchom teraz następujące polecenie.

    iproxy 2222 22

    Umożliwi to przekierowanie całego ruchu z portu 2222 do portu 22 przez USB

  3. Teraz możesz połączyć się z iPhonem, uruchamiając ssh

    ssh root@localhost -p 2222

Zauważ, że łączysz się localhostz adresem innym niż twój telefon. Jeśli wszystko poszło dobrze, powinien zostać wyświetlony monit ssh.

Jeśli to nie działa, sprawdź, czy ssh działa na iPhonie, uruchamiając

telnet <iphone-ip-address-here> 22

Jeśli nie możesz się połączyć, zainstaluj opensshpakiet z Cydii.

Joseph
źródło
Prawdopodobnie nie powinien sugerować instalacji OpenSSH, ponieważ autor jailbreak, qwertyoruiop, wyraźnie mówi, aby nie instalować OpenSSH.
Colin,
1
Nie mogłem się połączyć za pomocą Dropbear, w moim przypadku musiałem zainstalować OpenSSHpakiet, dlatego zasugerowałem, że ponieważ inne instrukcje wydają się oparte na wersji beta jailbreak
Joseph
To nie jest prawda. Możesz połączyć się przez SSH przez Wi-Fi z 10.2 Jailbreak. Wymaga tylko aktualizacji konfiguracji dropbear, aby nasłuchiwał na wszystkich interfejsach.
Doug
@Doug edytuj odpowiedź i umieść instrukcje dotyczące włączania SSH przez Wi-Fi.
Joseph
3

@Colin Ma świetną odpowiedź na łamanie więzienia w Yulu, ale zrobiłem coś trochę inaczej, co może być przydatne dla ludzi. Jego odpowiedź koncentruje się na stworzeniu nowego demona o nowej nazwie, aby skutecznie działały dwa demony z SSH. Jeden dla USB i jeden dla innych połączeń TCP. Chciałem jednego słuchacza, który słuchał na wszystkich interfejsach. Byłem także na Windowsie i potrzebowałem czegoś, co z tym działałoby, czego nie zrobił Galdolf. W rezultacie skorzystałem ze skryptu Python , który rozwidliłem, aby mieć pewność, że nigdy nie zniknie.

Aby tego użyć, uruchom:

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

Powyższe mapuje lokalny port 2222 na zdalny port 22. Po skonfigurowaniu możesz użyć swojego ulubionego narzędzia SSH, aby się połączyć. Użyłem Putty .

  • Host: 127.0.0.1
  • Port: 2222

Domyślna nazwa użytkownika „root” i hasło „alpine”, ale nazwa użytkownika „mobile” i hasło „alpine” mogą być również użyte do połączenia.

UWAGA: Jeśli nie znasz hasła roota, użyj Filza, aby zmienić uprawnienia /etc/master.passwd na 666, a następnie przez SSH jako użytkownik mobilny lub korzystając z ulubionego edytora plików, edytuj ten plik, aby skopiować skrót od „mobilnego” do „rootowego”, aby hasła były takie same. (Hash dla „alpine” to „/ smx7MYTQIi2M”, jeśli jest potrzebny). Następnie powinieneś być w stanie zalogować się jako root lub użyć su.

Po zalogowaniu będziesz chciał znaleźć kopie droplist.plist, które są obecnie na twoim komputerze. Prawdopodobnie są na to bardziej wydajne sposoby, ale użyłem następującego polecenia:

find . | grep dropbear.plist

Co dało:

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

Pierwszy wpis to aktywny demon, ale drugi jest ważniejszy. Jest to demon, który Yulu instaluje za każdym razem, gdy uruchamiasz jailbreak (co musisz zrobić przy każdym ponownym uruchomieniu). Jeśli edytujesz tylko /Library/LaunchDaemons/dropbear.plist, zostanie on zastąpiony przy każdym ponownym uruchomieniu.

W rezultacie będziemy edytować ten, który jest dostarczany z Yulu, ale jeśli złapiesz plik, zauważysz, że ma on binarny format PLIST. Aby to naprawić, potrzebujemy Erica Utilities , aby uzyskać plutil. Następnie możesz uruchomić:

plutil -xml dropbear.plist

Spowoduje to konwersję dropbear.plist do formatu XML. Po zakończeniu możesz edytować plik w dowolnym edytorze tekstu. Użyłem nano do faktycznej edycji.

na przykład

nano dropbear.plist

Podczas edycji pliku chcesz pozbyć się „localhost:” z ostatniego wpisu ciągu. Spowoduje to, że detektor będzie działał na wszystkich interfejsach zamiast tylko interfejsu pętli zwrotnej (który jest dostępny tylko przez USB). W rezultacie Twój plik staje się:

<?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>

Gdy to zrobisz, będziesz chciał ponownie umieścić plik w formacie binarnym:

plutil -binary dropbear.plist

W tym momencie sugeruję ponowne uruchomienie urządzenia i sprawdzenie, czy plik dropbear.plist Yalu został poprawnie skopiowany po ponownym uruchomieniu jailbreak:

na przykład

reboot

Po ponownym uruchomieniu powinieneś mieć możliwość SSH wykorzystując adres IP twojego telefonu i standardowy port 22.

na przykład

  • Host: (adres IP z ustawień -> WiFi -> (NAZWA WIFI)
  • Port: 22
Doug
źródło
Dziękujemy za wyjaśnienie wszystkich twoich kroków! To sprawia, że ​​jest znacznie bardziej przyszłościowy. Próbowałem> znaleźć. | grep dropbear.plist, aby znaleźć konfigurację dropbear w jailbreak LiberIOS, ale nie mam pojęcia, gdzie umieścili konfigurację.
Colin
1
Spróbuj przejść do: / Library / LaunchDaemons / i sprawdź, czy możesz znaleźć nazwę, której używali. Najprawdopodobniej wszędzie używali tej samej nazwy. W tym folderze znajdują się wszystkie skrypty demona, więc jeśli mają istniejącego demona, trzeba będzie do niego odwoływać.
Doug
Zapomniałem cd / przed uruchomieniem find. | grep dropbear.plist. Duh.
Colin
Dzięki temu zdałem sobie sprawę, że możemy po prostu zasugerować zhakowanie Dropbear.plist w Yalu IPA przed przesłaniem go do urządzenia za pomocą Impactor. Ale znowu, podczas gdy można bezpośrednio edytować binarne pliki .plist za pomocą Xcode na macOS, nie wiem, czy takie udogodnienia istnieją w systemie Windows czy Linux.
Colin
1
Tak, można to zrobić: forensicswiki.org/wiki/Converting_Binary_Plists
Doug