도리안의 개발 이야기 #90 - 서버 침해 관련 앱 난독화 적용 예정
지난 주말의 서버 침해 사건과 관련하여 조치해야 할 사항 중 또 다른 것은 APK를 난독화하는 것입니다. 안드로이드 앱은 APK라는 형태의 파일로 만들어지고, 그 안에 압축 저장된 DEX 파일들은 디컴파일(decompile)을 통해 (100%는 아니지만) 자바 소스를 복원할 수 있습니다. 서버 침해시 진행된 수많은 충전 요청들은 앱을 통해서가 아닌 API가 직접 실행된 것으로 추정합니다. 그렇다면 침입자가 어떻게 API를 알았을까요? 제 생각으로는 앱의 APK 파일을 디컴파일하여 알아낸 것으로 보입니다.
이번 서버 침해 건을 계기로 안드로이드 앱에 난독화를 적용하기로 했습니다. 난독화는 말그대로 복원된 소스를 읽기가 어렵게 한다는 뜻입니다. 소스 복원은 가능하다는 측면에서 어찌 보면 근본적인 해결책은 아니라고 볼 수도 있습니다. 게다가 난독화를 푸는 방법도 있다고 하니 어찌보면 큰 의미가 없을지도 모릅니다. 그럼에도 보안성을 조금이라도 높이는 것이 개발자가 해야 할 의무이죠. 다음 주에 Proguard 또는 Dexguard를 활용하여 난독화를 적용할 예정입니다.
천하제일연재대회 지난 글
36회 - 천하제일연재대회 시작! 그리고 예정 주제
38회 - 이직을 원하는 이유
39회 - 이직을 주저하는 이유
40회 - 일과 중에 학습 시간을 갖기로
41회 - 서비스 개발에 대한 회의감
42회 - 면접 후 생각
43회 - 천하제일연재대회 보팅 순서 관찰기
44회 - 포트폴리오 DB 계획 그리고 아쉬운 ERD 도구
45회 - 최근의 개발 업무의 실수 그리고 개선점
46회 - 개발 내용 기록에 대한 고민
47회 - 히스토리를 어떻게 남길까
48회 - 아쉬운 면접 결과
49회 - 개인 개발 주제 구상
50회 - 코드 복기 필요
51회 - 업무 분장 변경
52회 - 스프링 기반 restful API 개발 방법 정리 계획
53회 - 엇나간 개발 일정
54회 - 업무 분장 변경 하나? 안 하나?
55회 - 이력서 새로 작성
56회 - 헤드헌터와 통화
57회 - 대기업이냐 중소기업이냐
58회 - 서비스 안정화 필요
59회 - 자바의 예외 관련 자료
60회 - ERD 그리는 중
61회 - 검색 내용 정리
62회 - 이루지 못한 뉴욕의 꿈
63회 - 반복되는 카드 도용 이슈
64회 - 이직 보류
65회 - 최근 일이 어려워진 이유
66회 - 열정이 식었는가? 어떻게 해야 하나? (솔루션 아님)
67회 - 이번 주말에 해야 할 것
68회 - 간만에 깃허브 업데이트
69회 - 이스팀 모바일 오픈소스. 자바 개발을 기대했지만... ㅠㅠ
70회 - 안경 교체
71회 - 어제 DB 공부
72회 - 휴가를 보내고...
73회 - 희한한 busy 중복 게시
74회 - 야근. 회사에서? 집에서?
75회 - 심장 쫄깃했던 금요일 저녁
76회 - 이번 주말도 무사히... ^^
77회 - 주말에 DB 공부
78회 - 피곤해서 어려운 야간 공부
79회 - 현재 경력의 약점
80회 - 서버 개발자에게 업무 넘기기
81회 - 최근 고객사의 요구사항을 보며...
82회 - DB 개발의 어려움
83회 - 피로와의 싸움
84회 - 주말에 발생한 충전 침해 건들
85회 - 또 다시 허무하게 날려 버린 주말
86회 - 침해 건으로 발견된 서버의 허점
87회 - 현재 DB의 문제점
88회 - 서버 침해 관련 앱 로그 제거
89회 - 개발자의 고충. 해결 가능한가?
저런 이유가 있군요. ~
보안 관련해서 해야 할 게 의외로 많습니다. ㅠㅠ
Congratulations @dorian-dev! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word
STOP
To support your work, I also upvoted your post!
Do not miss the last post from @steemitboard:
모바일앱 개발도 보안적으로 챙겨야할 부분이 많네요.
참고로 API 구조를 파악하는 방법은 디컴파일해서 소스를 분석하는 방법도 있지만, 더 간단한 방법은 네트워크 패킷캡쳐로 알아내는 방법이 있습니다. 와이파이 테더링을 이용하면, 패킷캡쳐 프로그램을 사용해서 PC에서 모바일앱 네트워크 상황을 모니터링 할수 있습니다.
제 생각으로는 종단간(end-to-end) 암호화 방식 적용이 필요할 것으로 판단됩니다.
패킷 캡처는 어떻게 되는지 한번 해보는 것도 괜찮을 거 같네요. 조언 감사합니다.
행복한 ♥ 오늘 보내셔용~^^
Posted using Partiko Android
감사합니다.