[A2]android security의 과거와 미래 – from linux to jelly bean

2,109 views

Published on

Published in: Technology, News & Politics
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,109
On SlideShare
0
From Embeds
0
Number of Embeds
965
Actions
Shares
0
Downloads
80
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

[A2]android security의 과거와 미래 – from linux to jelly bean

  1. 1. About
  2. 2.  Me
  3. 3.  2000
  4. 4.  ATT
  5. 5.  Wireless:
  6. 6.  OODB/CORBA
  7. 7.  2001Cellvic(JTEL):
  8. 8.  CellvicOS/JVM
  9. 9.  2003
  10. 10.  Samsung:
  11. 11.  JVM
  12. 12.  for
  13. 13.  DTV/SimpleJIT
  14. 14.  2007
  15. 15.  Aromasoft:
  16. 16.  JVM
  17. 17.  for
  18. 18.  Mobile/JIT
  19. 19.  Optimization/Dalvik
  20. 20.  2011
  21. 21.  GE
  22. 22.  korea:
  23. 23.  Smart
  24. 24.  appliance/Linux
  25. 25.  2012
  26. 26.  SK플래닛:
  27. 27.  Android/T-Store
  28. 28.  ARM/Security
  29. 29.   –  jungpil.@sk.com
  30. 30.  또는
  31. 31.  lifeisliving@naver.com
  32. 32.  
  33. 33. •  개인정보가
  34. 34.  인터넷으로
  35. 35.  빠져나간다
  36. 36.  •  앱이
  37. 37.  허락받지
  38. 38.  않은
  39. 39.  인터넷을
  40. 40.  사용한다
  41. 41.  •  앱이
  42. 42.  허락받지
  43. 43.  않은
  44. 44.  동작(?)을
  45. 45.  한다
  46. 46.  •  앱이
  47. 47.  스스로
  48. 48.  루팅을
  49. 49.  한다
  50. 50.  •  앱이
  51. 51.  코드를
  52. 52.  스스로
  53. 53.  변경한다
  54. 54.  •  앱이
  55. 55.  Dalvik
  56. 56.  VM의
  57. 57.  정보를
  58. 58.  변경한다
  59. 59.  •  안드로이드앱이
  60. 60.  Dalvik
  61. 61.  VM이
  62. 62.  아닌
  63. 63.  다른
  64. 64.  VM을
  65. 65.  실행시킨다
  66. 66.  
  67. 67. •  5억대
  68. 68.  판매된,
  69. 69.  하루에
  70. 70.  130만대씩
  71. 71.   개통되는
  72. 72.  단말?
  73. 73.  •  A
  74. 74.  Java
  75. 75.  platform?
  76. 76.   –  역사상
  77. 77.  자바가
  78. 78.  표준
  79. 79.  개발언어인
  80. 80.  첫번 째
  81. 81.  디바이스?
  82. 82.  RIM?
  83. 83.  NDK?
  84. 84.  •  A
  85. 85.  forked
  86. 86.  Linux?
  87. 87.   –  Why
  88. 88.  linux?
  89. 89.   •  Andy
  90. 90.  Rubin:
  91. 91.  was
  92. 92.  a
  93. 93.  Apple
  94. 94.  Employee
  95. 95.   •  대안이
  96. 96.  없어서?
  97. 97.   –  역사상
  98. 98.  가장
  99. 99.  많이
  100. 100.  팔린
  101. 101.  linux
  102. 102.  device?
  103. 103.  
  104. 104. •  Linux:
  105. 105.  Open
  106. 106.  Source
  107. 107.   –  ‘mkdir
  108. 108.  android
  109. 109.  ;
  110. 110.  cd
  111. 111.  android
  112. 112.  ;
  113. 113.  repo
  114. 114.  init
  115. 115.  -u
  116. 116.  git://android.git.kern el.org/platform/manifest.git
  117. 117.  ;
  118. 118.  repo
  119. 119.  sync
  120. 120.  ;
  121. 121.  make’
  122. 122.  •  Java:
  123. 123.  easy
  124. 124.  to
  125. 125.  learn,
  126. 126.  many
  127. 127.  developers
  128. 128.   –  but
  129. 129.  an
  130. 130.  easy
  131. 131.  language
  132. 132.  for
  133. 133.  reverse-enigneering
  134. 134.   •  dex2jar,
  135. 135.  APKTool,
  136. 136.  JD-GUI,
  137. 137.  APKInspector,
  138. 138.  Smali,
  139. 139.  Dedexer,,,
  140. 140.  •  환상의
  141. 141.  커플!!!
  142. 142.  
  143. 143. •  Just
  144. 144.  a
  145. 145.  linux
  146. 146.  application
  147. 147.   –  following
  148. 148.  Google
  149. 149.  guides
  150. 150.  
  151. 151. •  Linux
  152. 152.  Process
  153. 153.  •  Dalvik
  154. 154.  VM
  155. 155.  •  Bionic
  156. 156.  •  JNI
  157. 157.  •  Is
  158. 158.  that
  159. 159.  all???
  160. 160.   –  Missing
  161. 161.  something…⋯
  162. 162.   –  PackageManager,
  163. 163.  ActivityManager,,,
  164. 164.  
  165. 165. •  Java?
  166. 166.  •  No
  167. 167.  more
  168. 168.  on
  169. 169.  Android!!!
  170. 170.  •  Dalvik
  171. 171.  VM
  172. 172.  is
  173. 173.  not
  174. 174.  a
  175. 175.  security
  176. 176.  boundary!!!
  177. 177.   –  But
  178. 178.  Linux
  179. 179.  Process
  180. 180.  
  181. 181. •  Linux
  182. 182.  UID/Group
  183. 183.  ID:
  184. 184.  
  185. 185.   –  a
  186. 186.  unique
  187. 187.  id
  188. 188.  based
  189. 189.  on
  190. 190.  its
  191. 191.  signature
  192. 192.  assigned
  193. 193.  when
  194. 194.  it
  195. 195.  starts
  196. 196.  •  Linux
  197. 197.  DAC:
  198. 198.  all
  199. 199.  or
  200. 200.  nothing
  201. 201.   –  old
  202. 202.  style
  203. 203.   –  root
  204. 204.  can
  205. 205.  do
  206. 206.  everything
  207. 207.   –  RWX
  208. 208.  
  209. 209. •  Permission
  210. 210.   –  Need
  211. 211.  to
  212. 212.  be
  213. 213.  described
  214. 214.  on
  215. 215.   AndroidMeanifest.xml
  216. 216.  •  Binder
  217. 217.  •  Kernel
  218. 218.  Enforcement
  219. 219.   –  group
  220. 220.  ID
  221. 221.  permission  name=android.permission.INTERNET     • 
  222. 222.  
  223. 223.  group  gid=inet  /  /permission
  224. 224.   –  Patch
  225. 225.   •  Internet
  226. 226.  
  227. 227. •  You
  228. 228.  can
  229. 229.  do
  230. 230.  everything
  231. 231.  in
  232. 232.  your
  233. 233.  process
  234. 234.  •  You
  235. 235.  can
  236. 236.  use
  237. 237.  Reflection/JNI
  238. 238.   –  To
  239. 239.  call
  240. 240.  hidden/private
  241. 241.  methods
  242. 242.   –  To
  243. 243.  get/set
  244. 244.  private
  245. 245.  fields
  246. 246.  •  But
  247. 247.  High
  248. 248.  return,
  249. 249.  High
  250. 250.  risk!!!
  251. 251.   ex)
  252. 252.  Unity3D:
  253. 253.  Using
  254. 254.  Mono
  255. 255.  VM
  256. 256.  
  257. 257. Distribution
  258. 258.  (Se Version
  259. 259.   Release
  260. 260.  date
  261. 261.   API
  262. 262.  level
  263. 263.   ptember
  264. 264.  4,
  265. 265.  20 12)
  266. 266.  4.1.x
  267. 267.  Jelly
  268. 268.  Bean
  269. 269.   July
  270. 270.  9,
  271. 271.  2012
  272. 272.   16
  273. 273.   1.2%
  274. 274.  4.0.x
  275. 275.  Ice
  276. 276.  Cream
  277. 277.  Sandwich
  278. 278.   October
  279. 279.  19,
  280. 280.  2011
  281. 281.   14-15
  282. 282.   20.9%
  283. 283.  3.x.x
  284. 284.  Honeycomb
  285. 285.   February
  286. 286.  22,
  287. 287.  2011
  288. 288.   11-13
  289. 289.   2.1%
  290. 290.  2.3.x
  291. 291.  Gingerbread
  292. 292.   December
  293. 293.  6,
  294. 294.  2010
  295. 295.   9-10
  296. 296.   57.5%
  297. 297.  2.2
  298. 298.  Froyo
  299. 299.   May
  300. 300.  20,
  301. 301.  2010
  302. 302.   8
  303. 303.   14%
  304. 304.  2.0,
  305. 305.  2.1
  306. 306.  Eclair
  307. 307.   October
  308. 308.  26,
  309. 309.  2009
  310. 310.   7
  311. 311.   3.7%
  312. 312.  1.6
  313. 313.  Donut
  314. 314.   September
  315. 315.  15,
  316. 316.  2009
  317. 317.   4
  318. 318.   0.4%
  319. 319.  1.5
  320. 320.  Cupcake
  321. 321.   April
  322. 322.  30,
  323. 323.  2009
  324. 324.   3
  325. 325.   0.2%
  326. 326.  
  327. 327. •  NX
  328. 328.  bit(No
  329. 329.  eXecute):
  330. 330.  
  331. 331.   –  to
  332. 332.  prevent
  333. 333.  code
  334. 334.  execution
  335. 335.  on
  336. 336.  heap
  337. 337.  and
  338. 338.  stack(2.3+)
  339. 339.  •  Prelink:
  340. 340.  Used
  341. 341.  to
  342. 342.  speed
  343. 343.  up
  344. 344.  boot
  345. 345.  process
  346. 346.   –  removed
  347. 347.  to
  348. 348.  prevent
  349. 349.  return-to-libc
  350. 350.  attacks(4.0+)
  351. 351.  •  Address
  352. 352.  Space
  353. 353.  Layout
  354. 354.  Randomization(4.0+)
  355. 355.   –  randomize
  356. 356.  key
  357. 357.  locations
  358. 358.  in
  359. 359.  memory
  360. 360.  •  PIE
  361. 361.  (Position
  362. 362.  Independent
  363. 363.  Executable)
  364. 364.  
  365. 365.   –  supports
  366. 366.  (4.1+)
  367. 367.  
  368. 368. •  FileSystem
  369. 369.  Encryption
  370. 370.   –  3.0+
  371. 371.  provides
  372. 372.  full
  373. 373.  filesystem
  374. 374.  encryption.
  375. 375.  128bit
  376. 376.  AES
  377. 377.  key
  378. 378.  derived
  379. 379.  from
  380. 380.  user
  381. 381.  password
  382. 382.  •  Credential
  383. 383.  Storage
  384. 384.  
  385. 385.   –  1.6+
  386. 386.  restricted
  387. 387.  for
  388. 388.  only
  389. 389.  system
  390. 390.   –  4.0+
  391. 391.  provides
  392. 392.  public
  393. 393.  API
  394. 394.  
  395. 395. •  1st.
  396. 396.  Protected
  397. 397.  APK
  398. 398.   –  /data/app:
  399. 399.  apk
  400. 400.  without
  401. 401.  code
  402. 402.   –  /data/app-private:
  403. 403.  protected
  404. 404.  by
  405. 405.  filesystem
  406. 406.  •  2nd.
  407. 407.  License
  408. 408.  Verification
  409. 409.  Library(LVL)
  410. 410.   –  Google:
  411. 411.  2010/7
  412. 412.   –  Amazon:
  413. 413.  DRM,
  414. 414.  T-Store:ARM
  415. 415.  •  3rd.
  416. 416.  Encrypted
  417. 417.  APK
  418. 418.   –  Jelly
  419. 419.  Bean
  420. 420.   –  Temporary
  421. 421.  Closed…⋯
  422. 422.  but
  423. 423.  
  424. 424.  
  425. 425. •  ODEX
  426. 426.  File:
  427. 427.  optimized
  428. 428.  dex
  429. 429.  file
  430. 430.   dex
  431. 431.  file
  432. 432.   Dalvik
  433. 433.  Virtual
  434. 434.  Machi odex
  435. 435.  file
  436. 436.   ne
  437. 437.   Storage
  438. 438.   (JIT
  439. 439.  Compiler)
  440. 440.   (reuse)
  441. 441.   decompile
  442. 442.  
  443. 443.   hijacking
  444. 444.  •  4.0+
  445. 445.  provides
  446. 446.  a
  447. 447.  raw
  448. 448.  dex
  449. 449.  loading
  450. 450.  API
  451. 451.  
  452. 452.   –  Without
  453. 453.  ODEX!!!
  454. 454.  
  455. 455. •  Applying
  456. 456.  SELinux
  457. 457.  in
  458. 458.  Android
  459. 459.  by
  460. 460.  NSA
  461. 461.  •  Linux
  462. 462.  Security
  463. 463.  Modules
  464. 464.   –  Standard
  465. 465.  Linux
  466. 466.  Security
  467. 467.  (Hooking)
  468. 468.  Framework
  469. 469.  from
  470. 470.  v2.6
  471. 471.   task
  472. 472.  management
  473. 473.  (creation,
  474. 474.  signaling,
  475. 475.  waiting),
  476. 476.  program
  477. 477.  loading
  478. 478.  (execve),
  479. 479.  file
  480. 480.  system
  481. 481.  management
  482. 482.  (superblo ck,
  483. 483.  inode,
  484. 484.  and
  485. 485.  filehooks),
  486. 486.  IPC
  487. 487.  (message
  488. 488.  queues,
  489. 489.  shared
  490. 490.  memory,
  491. 491.  and
  492. 492.  semaphore
  493. 493.  operations),
  494. 494.  module
  495. 495.  hooks
  496. 496.  (i nsertion
  497. 497.  and
  498. 498.  removal),
  499. 499.  and
  500. 500.  network
  501. 501.  hooks
  502. 502.  (covering
  503. 503.  sockets,
  504. 504.  netlink,
  505. 505.  network
  506. 506.  devices,
  507. 507.  and
  508. 508.  other
  509. 509.  protocol
  510. 510.  inte rfaces)
  511. 511.  
  512. 512.  security.h
  513. 513.  
  514. 514. •  2012/1
  515. 515.  AOSP
  516. 516.  master
  517. 517.  branch
  518. 518.  added(HAVE_SELINUX)
  519. 519.   –  in
  520. 520.  external/libselinux
  521. 521.  and
  522. 522.  external/sepolicy
  523. 523.   –  in
  524. 524.  core/java
  525. 525.  and
  526. 526.  core/jni
  527. 527.   •  SELinux.java,
  528. 528.  AndroidRuntime.cpp,
  529. 529.  android_os_SELinux.cpp
  530. 530.  •  Slow
  531. 531.  and
  532. 532.  incremental
  533. 533.  applying
  534. 534.  expected
  535. 535.   –  not
  536. 536.  enforcing
  537. 537.  mode
  538. 538.  but
  539. 539.  permissive
  540. 540.  mode
  541. 541.   –  Android
  542. 542.  5.0?
  543. 543.  •  Need
  544. 544.  to
  545. 545.  consider
  546. 546.  it!
  547. 547.  
  548. 548. •  ARM’s
  549. 549.  HW
  550. 550.  solution
  551. 551.  •  Virtualized
  552. 552.  processors
  553. 553.  on
  554. 554.  a
  555. 555.  ARM
  556. 556.  chip
  557. 557.  •  Secure
  558. 558.  World
  559. 559.  can
  560. 560.  read
  561. 561.  Normal
  562. 562.  World
  563. 563.   –  But
  564. 564.  Normal
  565. 565.  World
  566. 566.  can’t
  567. 567.  read
  568. 568.  Secure
  569. 569.  World
  570. 570.  •  Already
  571. 571.  on
  572. 572.  Galaxy
  573. 573.  S3!!!
  574. 574.  
  575. 575. •  Use
  576. 576.  Obfuscator
  577. 577.  •  Use
  578. 578.  Native
  579. 579.  Code
  580. 580.  •  Keep
  581. 581.  data
  582. 582.  on
  583. 583.  your
  584. 584.  server
  585. 585.  •  Sorry,
  586. 586.  Find
  587. 587.  your
  588. 588.  own
  589. 589.  solutions!
  590. 590.   –  2011
  591. 591.  Google
  592. 592.  I/O
  593. 593.  Evading
  594. 594.  Pirates
  595. 595.  and
  596. 596.  Stopping
  597. 597.  Vampires
  598. 598.  using
  599. 599.  License
  600. 600.  Ve rification
  601. 601.  Library,
  602. 602.  In-App
  603. 603.  Billing,
  604. 604.  and
  605. 605.  App
  606. 606.  Engine
  607. 607.   –  2012.4
  608. 608.  Code
  609. 609.  Obfuscation
  610. 610.  for
  611. 611.  the
  612. 612.  Amazon
  613. 613.  In-App
  614. 614.  
  615. 615.  
  616. 616.  •  Even
  617. 617.  Android
  618. 618.  has
  619. 619.  many
  620. 620.  security
  621. 621.  problems,
  622. 622.  it
  623. 623.  is
  624. 624.  an
  625. 625.  ope n,
  626. 626.  de-facto
  627. 627.  platform
  628. 628.  now
  629. 629.  •  It’s
  630. 630.  getting
  631. 631.  better
  632. 632.  but
  633. 633.  you
  634. 634.  need
  635. 635.  to
  636. 636.  keep
  637. 637.  your
  638. 638.  data/cod e
  639. 639.  by
  640. 640.  your
  641. 641.  own
  642. 642.  ways
  643. 643.  •  Its
  644. 644.  openness
  645. 645.  and
  646. 646.  flexibility
  647. 647.  could
  648. 648.  give
  649. 649.  some
  650. 650.  chances
  651. 651.  to
  652. 652.  creative
  653. 653.  developers
  654. 654.  •  T-Store
  655. 655.  promises
  656. 656.  to
  657. 657.  help
  658. 658.  you
  659. 659.  soon!
  660. 660.  

×