PendingIntent - 안드로이드 강좌

PendingIntent 클래스는 인텐트를 래핑하며 다른 응용 프로그램으로 전달하여 실행 권한을 준다는 점에서 보통의 인텐트와 다르다.
펜딩 인텐트는 시스템이 관리하며 인텐트를 만든 응용프로그램이 종료되어도 유효하다. 
생성자가 따로 정의 되어 있지 않으므로 객체를 직접 생성할 수 없고 다음 세 개의 정적 메서드 중에서 하나로 생성한다.

PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags)
PendingIntent getBoardcase(Context context, int requestCode, Intent intent, int flags)
PendingIntent getService(Context context, int requestCode, Intent intent, int flags)

flags
FLAG_CANCEL_CURRENT
FLAG_NO_CREATE
FLAG_ONE_SHOT
FLAG_UPDATE_CURRENT

Activity Lifecycle - 안드로이드 강좌


Activity 정의 - 안드로이드 강좌

Android Activity의 정의
Application에서 각 화면의 처리를 담당하는 모듈로 일반적으로  Intent를 통한 요청으로 실행됨
Activity의 크기는 기본적으로 Status Bar 영역을 제외한 화면 전체임
Activity의 이름은 "a~z 0~9_."문자만 사용할 수 있음

Android Architecture - 안드로이드 강좌


SetUID 정보보안

유닉스 해킹의 기본 SetUID
SetUID는 유닉스 해킹하는 데 가장 중요한 요소입니다.

거의 모든 유닉스 해킹은 SetUID를 이용한다고 말해도 과언이 아닐정도 입니다.

먼저 SetUID란? 

유닉스 파일 시스템에서는 각각의 파일마다 권한이 설정되어 있습니다. 

rwxrwxrwx 이런식으로 r = 읽기권한 w = 쓰기권한 x = 실행권한입니다.

앞에서 3개 단위로 파일의 소유자, 소유자가 속한 그룹, 아무나 이렇게 권한을 설정합니다

예를 들면 rwxr-x--x 이런 권한의 파일이 있다면 파일의 소유자는 읽기 쓰기 실행의 권한이 있고

소유자가 속한 그룹의 유저는 읽기 실행권한, 아무나는 실행의 권한만 있게 됩니다.

각각을 비트로 표현하면 r = 4 w = 2 x = 1로 각 숫자를 더하여 표현합니다. 

위의 예를 비트로 표현하면 751 이 되는 겁니다.

SetUID는 조금 특이한 권한인데요 rwsr-x--x 이런식으로 표현하며, 비트로 4000 으로 표현합니다.

즉 rwsr-x--x 는 4751 이 되겠지요.

그럼 SetUID는 왜 있는 것일까요?

유닉스 계열을 OS를 사용하다보면 일반 유저 계정이라도 자기 자신의 패스워드는 

자기자신이 바꿀수 있습니다. 자신의 계정의 암호를 바꿀수 없다면 말이 안되죠

그럼 유닉스의 암호를 저장해 놓는 파일인 shadow파일의 권한을 한번 보겠습니다.

관리자 계정인 root도 읽기 권한 밖에 없습니다.

이러한 패스워드가 저장되어 있는 파일을 아무나 읽을수 있다면 당연히 말이 안되겠지요

그러나 일반 유저도 저 파일을 읽고 쓸수 있어야 패스워드를 변경할 수 있겠죠?

그래서 나온것이 SetUID입니다.

암호를 바꾸는 명령어인 passwd 파일의 권한을 한번 보겠습니다.

SetUID가 설정이 된것이 보입니다.

SetUID가 설정된 파일은 실행 되는 동안에 잠깐 관리자 권한을 빌려오고,

작업을 마친후엔 다시 권한을 돌려주게 되는것입니다.


그래서 일반 유저라도 자신의 패스워드는 변경 할 수 있는 것입니다.

유닉스에서는 관리 목적상 이러한 SetUID가 설정된 파일들이 많이 있습니다. 한 50여개로 알고 있는데요

여튼 이 SetUID를 이용한 유닉스 해킹을 해보겠습니다.

만약 쉘에 SetUID가 걸려있다면 어떻게 될까요? 

쉘이 실행되는 동안 관리자 권한으로 모든 작업을 할수 있게됩니다.

일반 계정 suer100의 홈디렉토리에 ksh를 복사하고 

chmod를 이용하여 ksh에 SetUID를 설정합니다.

user100계정의 홈디렉토리에 있는 콘쉘에 SetUID가 걸린것을 확인 할 수 있습니다.

그럼 이제 user100으로 로그인을 하여 ksh을 실행 해 보겠습니다.

프롬프트가 $인걸로 보아 일반 계정인걸 알수 있습니다.

id 를 처보니 일반 계정인것을 확실히 알수 있습니다.

이제 ksh을 실행 합니다.

실행하는 동시에 프롬프트가# 으로 바뀌고, id를 처보니 euid=0 (root) 라고 생깁니다.

이것은 root 권한을 잠깐 빌려온것을 뜻합니다.

즉 콘쉘이 끝나기 전까진 루트 권한으로 작업을 할 수 있다는 것입니다.

shadow파일도 읽을 수 있는걸 확인 할 수 있습니다.

그럼 이런 쉘파일에 SetUID를 어떻게 거느냐가 해킹의 관건이 되겠지요?

아주 간단하게 쉘 스크립트를 짜서 (저정도 쉘 스크립트느 4-5줄 안으로 끝납니다.)

메일에 첨부해서 관리자에게 보내게 되면, 관리자가 그 메일을 읽는 동시에

스크립트가 실행 되게끔 하면 일은 간단합니다.

그리하야 관리자들은 이런 SetUID가 걸린 파일들의 관리가 중요합니다.

이런 파일들은 목록화 하여 MD5라는 해쉬 알고리즘을 이용해 관리 하는 것이 필요합니다.

자칫 잘못하면 권한이 없는 사용자가 시스템을 망가트리는 경우가 생길 수도 있는 것입니다.


출처 : http://superuser.egloos.com/2314778


1 2 3 4 5 6 7 8 9 10 다음