Slide 1

Slide 1 text

(Не)Безопасность 101 Григорий Джанелидзе

Slide 2

Slide 2 text

Почему поговорим: 2

Slide 3

Slide 3 text

Про что поговорим: • Как делать точно не надо • Как делать скорее всего не надо • Какие инструменты существуют для разных задач • Как с этим всем жить 3

Slide 4

Slide 4 text

101 is a topic for beginners in any area. It has all the basic principles and concepts that is expected in a particular field. – Wikipedia

Slide 5

Slide 5 text

Вся информация представлена исключительно в ознакомительных и образовательных целях. – я

Slide 6

Slide 6 text

Храним ключи Demo 6

Slide 7

Slide 7 text

7 Храним ключи

Slide 8

Slide 8 text

Храним ключи 8 Demo

Slide 9

Slide 9 text

Храним ключи 9

Slide 10

Slide 10 text

Храним ключи 10 https://github.com/KeepSafe/ReLinker

Slide 11

Slide 11 text

Храним ключи Итоги 11 Хранить в коде Хранить в манифесте/ресурсах Хранить в нативной библиотеке и доставать через JNI Хранить в коде и шифровать

Slide 12

Slide 12 text

12 Храним ключи Инструменты •apktool •JD-GUI, ByteCode Viewer, … •IDA Pro, Hopper, … •если нужны только строчки: man 1 strings

Slide 13

Slide 13 text

Обфусцируем 13 Demo

Slide 14

Slide 14 text

14 Обфусцируем Инструменты • smali / backsmali • https://github.com/CalebFenton/simplify • frida, xposed, … • https://github.com/xoreaxeaxeax/movfuscator

Slide 15

Slide 15 text

15

Slide 16

Slide 16 text

16 Обфусцируем Итоги •ProGuard полезный и его в любом случае надо включить •Но он не спасет •Ревью любых изменений в конфиге ProGuard’а ≠ обычное кодревью •декомпилируйте и пытайтесь реверсить

Slide 17

Slide 17 text

17 Обфусцируем Итоги •Я уже говорил, что не надо использовать JNI для «безопасности»? •ProGuard не трогает все методы с модификатором native •Выпиливайте логи, имена переменных, …

Slide 18

Slide 18 text

18 Обфусцируем Зло •Consumer ProGuard Files

Slide 19

Slide 19 text

19 Обфусцируем Зло ¯\_(ツ)_/¯ (спасибо Google, стало удобнее)

Slide 20

Slide 20 text

Сопротивляемся 20 Demo

Slide 21

Slide 21 text

21 Сопротивляемся Итоги •Debug.isDebuggerConnected() •не надо •лайфхаки с ptrace •могут быть полезными •миграция с json’а на protobuf, flatbuf, … •поможет, но не сильно

Slide 22

Slide 22 text

22 Сопротивляемся Итоги •SSL pinning нужен и спасёт •…но не от реверсинжиниринга

Slide 23

Slide 23 text

23 Сопротивляемся Инструменты •man 1 ps •gdb, lldb, … •frida, xposed, …

Slide 24

Slide 24 text

Как быть? 24 •Пользоваться проприетарными решениями •DexGuard, SecNeo, DexProtector, … •Если есть ресурсы и время, то делать свое

Slide 25

Slide 25 text

Заключение • Всегда нужно понимать, что делаешь • Проверяйте любые советы по безопасности на практике • , но с этим надо жить 25

Slide 26

Slide 26 text

И если что: 26 На iOS всё не сильно лучше (но это тема отдельного выступления)

Slide 27

Slide 27 text

27 Спасибо за внимание

Slide 28

Slide 28 text

28 t.me/androidguards