You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: MASTG.md
+38-1Lines changed: 38 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -15,6 +15,8 @@
15
15
16
16

17
17
18
+
# APK
19
+
18
20
Приложения делятся на три типа:
19
21
-`Гибридные` - написаны на фреймворках (см. React Native) для создания приложений на Android и iOS одновременно
20
22
-`Нативные` - написаны на нативном языке (Java, Kotlin, Objective-C, Swift)
@@ -36,6 +38,8 @@ APK-приложения имеют следующую струткуру:
36
38
adb shell pm list packages | grep name
37
39
```
38
40
41
+
## Директории
42
+
39
43
После установки приложение находится в папке `/data/data/pkg-name`. В директории `/data/app/` хранится .apk-файл приложения. Для того, чтобы его узнать точное расположение пакета:
Начиная с Android 9 (API level 28) ОС использует TLS для передачи данных по сети по умолчанию. Чтобы изменить это поведение, нужно указать об этом явно в конфигурации `res/xml/network_security_config.xml`.
69
73
74
+
## Региональные ограничения
75
+
76
+
Не все приложения в Google Play доступны из любой географиечской точки, и некоторые вводят ограничения на установку из отдельных регионов.
77
+
78
+
Для того, чтобы обойти это ограничение, нужно воспользоваться либо VPN (https://telegra.ph/Aurora-Store-GeoSpoof-08-13), либо сервисами по загрузке APK https://apkcombo.com/downloader/.
79
+
70
80
## Статический анализ приложений
71
81
72
82
### FireBase
@@ -122,6 +132,8 @@ run app.package.attacksurface pkg-name
122
132
123
133
**Activity** - это наследник класса Activity. На экране может показываться только одно Activity одновременно. Те activity, которые могут вызываться другими приложениями, называются exported activities. В лучшем случае у приложения оно одно - точка входа в него. Если это не так, необходимо убедиться, что вызов exported activity не позволяет нарушать бизнес логику или обходить локальную аутентификацию.
124
134
135
+
> ❕ Если атрибут `exported` не указан, но прописан `<intent-filter>`, activity становится экспортируемым по умолчанию
136
+
125
137
```
126
138
run app.activity.info -a pkg-name
127
139
run app.activity.start --component pkg-name activity
BugBounty отчеты могут быть найдены, например, следующим образом: `"deep link*"|"deeplink*" site:https://hackerone.com/reports/`
262
+
BugBounty отчеты могут быть найдены, например, следующим образом: `"deep link*"|"deeplink*" site:https://hackerone.com/reports/` или `"intent" site:https://hackerone.com/reports/`
251
263
252
264
## Лабы
253
265
@@ -266,6 +278,31 @@ BugBounty отчеты могут быть найдены, например, с
266
278
267
279
# Операционная система iOS
268
280
281
+
## Приложения
282
+
283
+
Единственным дистрибьютором приложений на iOS является Apple App Store, установка .ipa-файлов (iOS App Store Package) напрямую на устройство называется sideloading. До версии iOS 9 sideloading был возможен только при наличии jailbreak, однако теперь [его можно установить при помощи Xcode](https://lifehacker.com/how-to-install-unapproved-apps-on-an-iphone-without-jai-1749519150). При этом получить .ipa-файл из установленного приложения, можно только с jailbroken устройства (или от разработчиков).
284
+
285
+
Для того, чтобы приложение могло запуститься на iOS, оно должно быть подписано сертификатом Apple. Для этого необходимо иметь аккаунт разработчика: вступить в Apple Developer Program и платить ежегодный взнос. Существует также free-профиль, но приложения, подписанные этими сертификатами, не могут быть добавлены в App Store.
286
+
287
+
Собственно, сам процесс jailbreaking'a заключается в отключении данных проверок в отличии от ОС Android, где возможно внести изменения в ROM.
288
+
289
+
Приложения ограничены друг от друга sandbox-средой называемой Seatbelt и MAC. Каждому приложению доступная только собственная chroot-директория (var/mobile/Containers/ Bundle/Application/ или /var/containers/Bundle/Application/), процессы изолированы друг от друга даже если имеют одинаковый UID. IPC механизмы не так широко используются, как в Android.
290
+
291
+
Каждый .ipa-файл представляет собой ZIP-архив с примерно следующей структурой:
292
+
```
293
+
├───Payload/ - данные приложения
294
+
│ ├───Application.app - скомпилированный код
295
+
│ ├───Info.plist - конфигурационный лист (содержит bundle id, версию и display name)
296
+
│ ├───Settings.bundle - специальные настройки приложения, отображаемые в Settings
297
+
│ └───MainWindow.nib - интерфейс - точка входа в приложение
298
+
```
299
+
300
+
### Jailbreak
301
+
302
+
Получить доступ к консоли iOS нельзя также просто, как на устройстве с Android. Для этого устройство должно быть с jailbreak, а также на нем должен быть устрановлен SSH. При этом дефолтными пользователями будут `root` или `mobile`, а паролем - `alpine`.
303
+
304
+
Для подключения по USB можно использовать `usbmuxd`.
305
+
269
306
### KeyChain
270
307
271
308
Сам по себе KeyChain не является безопасным достаточно, чтобы хранить в нем чувствительные данные в открытом виде, поскольку существуют способы, позволяющие получить к ним доступ: локальное и облачное резервное копирование, хуки.
0 commit comments