ЦИКЛЫ СТАТЕЙ:

UNIX И ANDROID SHELL

Данная статья изначально являлась основой для статьи БОЕВОЙ ANDROID и в основном здесь речь пойдёт только о удалённом подключении к консоли Android-устройства и справке по необходимым командам, приложениям и скриптам. В статье будет рассмотрено получение доступа к смартфону через подключение по USB кабелю с использованием консольной программы ADB (Android Debug Bridge) и через приложение SSHDroid, чтобы подключаться к устройству по Wi-Fi. Так же немного будет затронут bash-скриптинг на Linux.

ЦИКЛ СТАТЕЙ SHELLCODE

  1. ВСЁ О SHELL
  2. КОМАНДНАЯ СТРОКА WINDOWS
  3. UNIX И ANDROID SHELL
  4. НЕ БЕЗ METASPLOIT

ПРАКТИКА

  1. Для начала скачиваем инструменты для работы со смартфоном:
    1. Официальный сайт ADB
    2. Официальный сайт Android Screencast
    3. Официальный сайт PuTTY
    4. Официальный сайт WinSCP
    5. 4PDA SSHDroid Unlocked
  2. Распаковываем ADB и Android Screencast в C:\adb, а остальное в C:\adb\ssh.
  3. Далее подключаем по USB смартфон и открываем командную строку (win+r, пишем cmd), вводим команды:
    1. cd c:\adb — перейти в каталог adb.
    2. adb devices — показать найдено ли устройство и подключить устройство.
    3. adb connect host:port — подключить устройство удалённо по IP.
    4. adb push C:\adb\ssh\sshdroid.apk /sdcard/Download/apk — перемещаем SSHDroid в стандартную папку для загрузок — Downloads в папку apk.
  4. Устанавливаем приложение SSHDroid со смартфона или с помощью Android Screencast. Для второго способа нужно иметь Java7+ и запустить .jar приложение, тогда появится окно рабочего стола смартфона.
  5. Открываем приложение и нажимаем Start. Там же в поле Address запоминаем IP-адрес.
  6. Открываем PuTTY, в поле Host Name пишем IP-адрес, в поле Port пишем 2222, в Connection Type выбираем чекбокс SSH. ОК.
  7. В открывшемся окне PuTTY появится строка «login as:». Пишем root, а на запрос пароля admin.
  8. putty.exe login@ip:port -pw password — автоматический вход из cmd.

Поздравляю, теперь вы можете отсоединить USB кабель и подключаться своему устройству удалённо! Далее рассмотрим команды, которые помогут вам в элементарном администрировании.

СТАНДАРТНЫЕ КОМАНДЫ

  1. Команды UNIX:
    1. pwd — показать имя текущего каталога.
    2. cd [путь] — перейти в указанный каталог.
    3. ls — показать содержимое каталога.
    4. cp [полный путь до файла] [полный путь до каталога] — копировать.
    5. mv [полный путь до файла] [полный путь до каталога] — переместить.
    6. rm [полный путь до файла] — удалить.
    7. mkdir — создать каталог.
    8. rmdir — удалить каталог.
    9. echo «Hello World» — показать текст, который она содержит.
    10. Запись в файл.
      1. [команда] > [путь до файла] — записать первой строкой в файл.
      2. [команда] >> [путь до файла] — записать следующей строкой в файл.
      3. * Использовать > и >> можно для всех команд, чтобы можно было записать результат в файл.
    11. Команда cat покажет содержимое файла:
      1. cat /sys/class/power_supply/battery/capacity — показать состояние батареи в процентах.
    12. sh [полный путь до файла] — запустить скрипт.
    13. df — показать свободное место.
    14. ps — показать запущенные процессы.
    15. kill [id] — завершить процесс.
    16. start/stop — запуск и остановка системных служб.
    17. reboot -p — перезагрузить устройство.
  2. Команда pm (package manager) позволяет управлять пакетами:
    1. pm — показать справку по команде.
    2. pm list packages — отсортировать по ключам.
      1. [-s] — только системные приложения.
      2. [-3] — только сторонние приложения.
      3. [-f] — только пути установленных пакетов.
    3. pm list packages — показать список установленных приложений.
    4. pm install [путь] — установить приложение из пакетного .apk файла.
    5. pm clear [приложение] — очистить кэш приложения.
    6. pm uninstall [приложение] — удалить приложение.
    7. pm list permissions — показать все разрешения для приложений.
  3. Команда am (activity manager) позволяет управлять приложениями:
    1. am — показать справку по команде.
    2. am start -n com.android.settings/.Settings — запустить окно настроек.
    3. am start -n com.android.browser/.BrowserActivity — запустить браузер.
    4. am start tel:210-385-0098 — показать окно набора данного номера.
    5. am kill [приложение] — завершить приложение.
    6. * Чтобы запустить приложение — нужно знать его Activity, а для того, чтобы узнать — нужно найти activity приложения в поисковике, либо декомпилировать приложение (с помощью JDK/SDK искать в AndroidManifest.xml, или установить приложение Activity Launcher).
      «Activity — это компонент приложения, который выдает экран, и с которым пользователи могут взаимодействовать для выполнения каких-либо действий.» (с)
  4. Команды для сети:
    1. netcfg — показать сетевые настройки.
    2. netstat -lptu — показать открытые порты и приложения(только серверы).
    3. netstat -wat — показать все порты.
    4. iftop — посмотреть использование сети процессами.
    5. ifconfig wlan0 — посмотреть настройки IP и маски подсети.
    6. svc — управление мобильным подключением, wifi, usb и питанием.
  5. Сервисы:
    1. service — показать справку по управлению Java сервисами.
    2. service list список сервисов.
  6. Дампы: cat /sys/class/power_supply/battery/capacity
    1. dumpstate — дамп состояния устройства.
    2. dumpsys — дамп состояния системных сервисов.

ADB КОМАНДЫ

  1. Команда input позволяет отправить нажатие в текущее окно:
    1. input [источник] [команда] [аргументы] — отправить нажатие.
      1. input tap [x] [y] — нажать в указанное место.
      2. input swipe 10 10 10 1000 — вытянуть панель уведомлений.
      3. input keyevent 82 — нажать кнопку питания.
      4. input text «текст» — вставить текст в текущее поле.
      5. press (Default: trackball)
      6. roll [dx] [dy] (Default: trackball)
    2. dumpsys window | \sed -n ‘/mUnrestrictedScreen/ s/^.*) \([0-9][0-9]*\)x\([0-9][0-9]*\)/\1 \2/p’ — показать ширину и высоту экрана.
  2. Скриншоты:
    1. screencap — сделать скриншота.
    2. screenrecord — записать скринкаст.
  3. Копирование:
    1. adb push [путь с пк] [путь на андроид] — копировать.
    2. adb pull [путь на андроид] [путь с PC] — копировать.
  4. Установка и удаление приложений:
    1. adb install [-l] [-r] [-s] [полный путь до приложения на пк] — загрузить приложение на устройство и установить его.
      1. [-l] — блокировка приложения.
      2. [-r] — переустановить приложение, с сохранением данных.
      3. [-s] — установить приложение на карту памяти.
    2. adb uninstall [-k] [название_приложения.apk] — удалить приложение с устройства.
      1. [-k] — не удалять сохраненные данные приложения и пользователя.
  5. Перезагрузка:
    1. adb reboot bootloader — перезагрузить в режим bootloader.
    2. adb reboot recovery — перезагрузить в режим recovery.
  6. getprop/setprop — команды для чтения и изменения системных переменных.

BUSYBOX КОМАНДЫ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
busybox --list
[
[[
acpid
addgroup
adduser
adjtimex
ar
arping
ash
awk
basename
blockdev
brctl
bunzip2
bzcat
bzip2
cal
cat                 прочитать файл
chgrp
chmod               сменить права
chown
chroot
chvt
clear               очистить экран
cmp
cp                  копировать
cpio
crond
crontab
cut
date                текущие дата и/или время
dc
dd                  копировать файл с конвертированием и форматированием
deallocvt
delgroup
deluser
df                  вывести статистику использования файловой системы
diff
dirname
dmesg
dnsdomainname
dos2unix
dpkg
dpkg-deb
du
dumpkmap
dumpleases
echo                вывести строку
ed
egrep
eject
env
expand
expr
false
fbset
fdflush
fdisk
fgrep
find
fold
free                выводит информацию о использовании памяти
freeramdisk
fsck.minix
ftpget
ftpput
getopt
getty
grep                искать по шаблону
gunzip              распаковать из gzip
gzip                упаковать в gzip
head
hexdump
hostid
hostname
httpd
hwclock
id
ifconfig            настройка сетевых интерфейсов
ifdown              выключение сетевого интерфейса
ifup                включение сетевого интерфейса
init
ionice
ip                  настройка сетевых интерфейсов
ipcalc
kill                завершить процесс
killall
klogd
last
length
less
linuxrc
ln                  создать ссылку на файл или каталог
loadfont
loadkmap
logger
login               начать новый сеанс в системе
logname
logread
losetup
ls                  вывести список файлов или каталогов
lzcat
lzma
makedevs
md5sum
mdev
mesg
microcom
mkdir               создать каталог
mkfifo
mkfs.minix
mknod
mkswap
mktemp
more                вывод файла построчно или экранами
mount               примонтировать устройство/ресурс
mt
mv                  переместить файл
nameif
nc
netstat
nslookup
od
openvt
passwd
patch
pidof               вывести список PID всех процессов
ping                отправить сетевым хостам пакеты ICMP ECHO_REQUEST
ping6
pivot_root
printf
ps
pwd                 вывести рабочий каталог
rdate
readlink
realpath
renice
reset
rev
rm                  удалить файл
rmdir               удалить каталог
route
rpm
rpm2cpio
run-parts
sed
seq
setkeycodes
sh
sha1sum
sha256sum
sha512sum
sleep
sort
start-stop-daemon
static-sh
strings
stty
su
sulogin
swapoff
swapon
switch_root
sync
sysctl
syslogd
tac
tail
tar                 упаковать в tar
tee
telnet              клиент текстового интерфейса взаимодействия
telnetd             сервер текстового интерфейса взаимодействия
test
tftp
time
timeout
top
touch               обновить дату последнего изменения файла
tr
traceroute          команда для трассировки маршрута
traceroute6
true
tty
tunctl
udhcpc
udhcpd
umount              размонтировать
uname               печатает сведения о системе
uncompress
unexpand
uniq
unix2dos
unlzma
unxz
unzip               распаковать zip архив
uptime
usleep              пауза N микросекунд
uudecode
uuencode
vconfig
vi                  текстовый редактор
vlock
watch               выполнять программу периодически
watchdog
wc
wget
which
who
whoami
xargs
xz
xzcat
yes
zcat                распаковать в стандартный вывод

Твики build.prop

Файл /system/build.prop хранит системные настройки Android. Это конфиг всех конфигов, и с его помощью можно сделать огромное количество интересных вещей. Достаточно вписать в конец файла строку с именем опции и значением через знак равно:

  1. ro.product.model — хранит название устройства (отображается в меню «О телефоне»). Иногда позволяет обманывать Play Store и ставить приложения, предназначенные для других устройств, или включать недоступные другим функции. Например, выдать себя за Pixel 2 XL и поставить новый Pixel Launcher с полноценной поддержкой Android Assistant;
  2. ro.sf.lcd_density — плотность пикселей на экране, которую я всегда выставляю для своего Nexus 5 на 420 вместо 480. Это позволяет получить пять иконок в ряд в стоковом лаунчере вместо четырех плюс делает текст более мелким;
    Временный вариант(без рут прав): «С другой стороны, это значение можно записать во временную память, даже без рут-доступа. Изменение будет сохранено до первой перезагрузки. Это и плюс (безопасно), и минус (после перезагрузки надо снова производить действия), но меня устраивает. Для получения и записей подобных значений используется команда getprop и setprop, соответственно, но писать надо не в ro.* (на то он и ro — read only), а в qemu:
    setprop qemu.sf.lcd_density 200» и «после чего нужно перезапустить графическую оболочку»
  3. ro.telephony.call_ring.delay — при значении 0 уберет задержку начала включения музыки при звонке;
  4. persist.audio.fluence — содержит четыре команды, отвечающие за работу шумодава. Можно поиграть со значениями, если тебя плохо слышно при звонке или есть «булькающий» звук на записи видео;
  5. debug.sf.nobootanimation — значение 1 убирает бутанимацию;
  6. ro.config.hw_quickpoweron — значение true увеличивает скорость загрузки телефона (в теории);
  7. qemu.hw.mainkeys=0 — позволяет активировать показ наэкранных клавиш в дополнение к хардварным;
  8. ro.telephony.default_network — говорит системе, в какой режим должна быть переключена мобильная сеть при загрузке. В качестве значения выступает цифра, которую можно узнать так: набираем в номеронабирателе ##4636## и нажимаем на «Информация о телефоне». В меню «Предпочтительный тип сети» отсчитываем сверху до нужного режима. Счет начинается с нуля. То есть для 3G-смартфона значения будут такими: WCDMA preferred (предпочтительно 3G) — это 0, GSM Only (только 2G) — 1, WCDMA only (только 3G) — 2 и так далее. Досчитал до нужного пункта — записал цифру в значение. Теперь сразу после перезагрузки сеть будет активироваться именно в том режиме, который записан в build.prop.

ЗАПУСК ПРИЛОЖЕНИЙ

  1. Чтобы запустить стандартное приложение «Настройки» с определённым меню нужно выполнить:

    am start -n com.android.settings/.Settings\…

    и вместо «…» нужно подставить строку из предоставленных ниже. Результат этой команды откроет приложение, а вам остаётся прописать input с определённым действием и нажать на нужные кнопки, ввести нужные данные. Таким образом вы можете делать с помощью скриптов перезапуск отладки по USB, подключиться к Wi-Fi сети, зашифровать данные, сделать восстановление системы итд.
    // Спец. возможности
    $AccessibilitySettingsActivity
    // Синхронизация
    $AccountSyncSettingsActivity
    // Настройки IP (и фильтр плохих сетей)
    $AdvancedWifiSettingsActivity
    $AndroidBeamSettingsActivity
    // Bluetooth
    $BluetoothSettingsActivity
    // Зашифровать данные
    $CryptKeeperSettingsActivity
    $CryptSDCardSettingsActivity
    // Передача данных
    $DataUsageSummaryActivity
    // Настройки даты и времени
    $DateTimeSettingsActivity
    // Для разработчика
    $DevelopmentSettingsActivity
    // Настройки администрирования
    $DeviceAdminSettingsActivity
    // Состояние телефона
    $DeviceInfoSettingsActivity
    // Экран
    $DisplaySettingsActivity
    $DockSettingsActivity
    // Язык и ввод
    $InputMethodAndLanguageSettingsActivity
    // Язык
    $LocalePickerActivity
    // Мое местоположение
    $LocationSettingsActivity
    $ManageAccountsSettingsActivity
    // Приложения
    $ManageApplicationsActivity
    $MenuPowerSavingModeSettingsActivity
    $MotionSettingsActivity
    // Питание
    $PowerUsageSummaryActivity
    // Восстановление и сброс
    $PrivacySettingsActivity
    // Работающие приложения
    $RunningServicesActivity
    // Безопасность
    $SecuritySettingsActivity
    $SoftwareUpdateSettingsActivity
    $SoundSettingsActivity
    // Проверка правописания
    $SpellCheckersSettingsActivity
    // Настройки хранилища
    $StorageSettingsActivity
    // Использование памяти
    $StorageUseActivity
    // Точка доступа Wi-Fi
    $TetherSettingsActivity
    // Настройки синтеза речи
    $TextToSpeechSettingsActivity
    // Словарь пользователя
    $UserDictionarySettingsActivity
    // VPN
    $VpnSettingsActivity
    $WifiP2pSettingsActivity
    // Wi-Fi
    $WifiSettingsActivity
    // Беспроводные сети
    $WirelessSettingsActivity

СКРИПТЫ

  1. Сохраняем скрипт в файл с расширением .sh.
  2. sh [полный путь до файла] — запустить скрипт.

Запуск ADB в сетевом режиме:
#!/system/bin/sh
setprop service.adb.tcp.port 5555
stop adbd
start adbd

Делает бэкап всех приложений на карту памяти
#!/system/bin/sh
mkdir /sdcard/backup
cp /data/app/*.apk /sdcard/backup

Скрипт, который восстановит бэкап:
#!/system/bin/sh
for i in /sdcard/backup/*; do
pm install -t -r $i
done

Изменить IMEA
echo ‘AT+EGMR=1,7,»xxx»‘ >/dev/radio/pttycmd1

Изменить MAC
ip link set eth0 address 00:11:22:33:44:55

Показывает имя всех установленных пакетов
pm list packages -f

Запускает программу
monkey -p имя пакета -c android.intent.category.LAUNCHER 1
========
Создать файл /system/etc/wifi/ungolianth.conf с содержимым:
network={
ssid=»Ungolianth»
psk=»JJi.D6k-AcapF4HI1V+Qz1WzK*KEJyW2-z2!l2dgP~Hg05zCwnOXWJ2Dbyd9ph0″
priority=1
}

#!/system/bin/sh
wpa_supplicant -i wlan0 -c /system/etc/wifi/ungolianth.conf
dhcpcd wlan0
========

МАТЕРИАЛЫ

  1. 4PDA — ADB и все, что c помощью него можно сделать
  2. ][ — Shell-скриптинг в среде Android

Теги:

Автор: