Skip to content

Commit a3e37e6

Browse files
committed
added ios + google play regional restrictions
1 parent d117f9e commit a3e37e6

File tree

1 file changed

+38
-1
lines changed

1 file changed

+38
-1
lines changed

MASTG.md

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
![](pics/dalvik_vs_java.png)
1717

18+
# APK
19+
1820
Приложения делятся на три типа:
1921
- `Гибридные` - написаны на фреймворках (см. React Native) для создания приложений на Android и iOS одновременно
2022
- `Нативные` - написаны на нативном языке (Java, Kotlin, Objective-C, Swift)
@@ -36,6 +38,8 @@ APK-приложения имеют следующую струткуру:
3638
adb shell pm list packages | grep name
3739
```
3840

41+
## Директории
42+
3943
После установки приложение находится в папке `/data/data/pkg-name`. В директории `/data/app/` хранится .apk-файл приложения. Для того, чтобы его узнать точное расположение пакета:
4044

4145
```sh
@@ -67,6 +71,12 @@ bundletool build-apks --bundle=my_app.aab --output=my_app.apk
6771

6872
Начиная с Android 9 (API level 28) ОС использует TLS для передачи данных по сети по умолчанию. Чтобы изменить это поведение, нужно указать об этом явно в конфигурации `res/xml/network_security_config.xml`.
6973

74+
## Региональные ограничения
75+
76+
Не все приложения в Google Play доступны из любой географиечской точки, и некоторые вводят ограничения на установку из отдельных регионов.
77+
78+
Для того, чтобы обойти это ограничение, нужно воспользоваться либо VPN (https://telegra.ph/Aurora-Store-GeoSpoof-08-13), либо сервисами по загрузке APK https://apkcombo.com/downloader/.
79+
7080
## Статический анализ приложений
7181

7282
### FireBase
@@ -122,6 +132,8 @@ run app.package.attacksurface pkg-name
122132

123133
**Activity** - это наследник класса Activity. На экране может показываться только одно Activity одновременно. Те activity, которые могут вызываться другими приложениями, называются exported activities. В лучшем случае у приложения оно одно - точка входа в него. Если это не так, необходимо убедиться, что вызов exported activity не позволяет нарушать бизнес логику или обходить локальную аутентификацию.
124134

135+
> ❕ Если атрибут `exported` не указан, но прописан `<intent-filter>`, activity становится экспортируемым по умолчанию
136+
125137
```
126138
run app.activity.info -a pkg-name
127139
run app.activity.start --component pkg-name activity
@@ -247,7 +259,7 @@ https://github.com/JakeWharton/pidcat
247259

248260
https://forum.bugcrowd.com/t/researcher-resources-mobile-focused/1376
249261

250-
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/`
251263

252264
## Лабы
253265

@@ -266,6 +278,31 @@ BugBounty отчеты могут быть найдены, например, с
266278

267279
# Операционная система iOS
268280

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+
269306
### KeyChain
270307

271308
Сам по себе KeyChain не является безопасным достаточно, чтобы хранить в нем чувствительные данные в открытом виде, поскольку существуют способы, позволяющие получить к ним доступ: локальное и облачное резервное копирование, хуки.

0 commit comments

Comments
 (0)