길호넷 http://kilho.net 칼무리, 윈도우클리너, 이미지창고, 프로그램 다운로드 제공 Thu, 13 Jul 2017 13:35:03 +0000 ko-KR hourly 1 https://wordpress.org/?v=4.8 웹해킹, 백도어 위험코드 감지 플러그인 http://kilho.net/archives/wordpress/1670 http://kilho.net/archives/wordpress/1670#comments Wed, 12 Jul 2017 21:42:29 +0000 http://kilho.net/?p=1670 서버 해킹을 위해 몰래 설치된 백도어(PHP) 를 쉽게 찾고자 만든 플러그인입니다.

PHP 에서 악용할 수 있는 함수가 사용된 파일을 찾아 메일로 알려줍니다.

 

워드프레스, 그누보드5 에서 쉽게 설치해서 사용하실 수 있습니다.

 

처음 활성화시 전체적으로 검사를 하며, 매시간마다 의심가는 파일이 발견되는 경우 관리자 메일로 알려드립니다.

 

사용방법

  1. 해당 솔루션에 맞는 플러그인을 다운받습니다.
  2. 아래와 같은 폴더에 다운받은 파일을 압축 풀고 복사합니다.
    – 워드프레스 : /wp-content/plugins/kh-scan/kh.scan.php
    – 그누보드 : /extended/kh.scan.php
  3. 워드프레스인 경우에는 플러그인 목록에서 “Kilho’s Anti Backdoor for WordPress” 를  활성화합니다.

 

다운로드

 

주절주절

  • 이전에 작성한 PHP 위험코드 점검하는 글에 Matthew님께서 의견을 주셔서 워드프레스 플러그인으로 만들었습니다.

 

]]>
http://kilho.net/archives/wordpress/1670/feed 4
은행클리너(BankCleaner) – 인터넷뱅킹 플러그인 삭제 http://kilho.net/archives/various/1651 http://kilho.net/archives/various/1651#comments Tue, 04 Jul 2017 03:43:02 +0000 http://kilho.net/?p=1651 사용방법

  1. 프로그램을 실행시킵니다.
  2. 설치된 프로그램 목록을 클릭하거나 드래그해서 선택합니다.
  3. “제거하기” 버튼을 클릭합니다.

 

다운로드

 

주절주절

  • 인터넷뱅킹하기 위해 깔린 쓰잘때기 없는 프로그램들을 쉽게 지울려고 만들었습니다.
  • 익스플로어 종료를 하더라도 프로세서에 남아있는 것들 보면 완전 찝찝.
    (해당 개발사 실력도 못 믿겠고)
  • ActiveX 대신에 EXE 로 설치하는건 .. 에혀 ㅠ
  • 플러그인 설치에 대한 선택권이 왜 없는건지.
  • 국민은행, 기업은행, 우리은행, 농협을 테스트 하였습니다.
  • 설치 없이 다운받고 실행하면 끝!
]]>
http://kilho.net/archives/various/1651/feed 17
레지스트리 모니터링(Delphi) http://kilho.net/archives/engineering/1643 http://kilho.net/archives/engineering/1643#respond Tue, 04 Jul 2017 01:18:21 +0000 http://kilho.net/?p=1643 procedure RegistryMonitor(RootKey: HKEY; Key: string; Proc: TProc; WatchSub: boolean); begin TThread.CreateAnonymousThread( procedure var Reg: TRegistry; Event: cardinal; begin Reg := TRegistry.Create; Reg.RootKey := RootKey; if Reg.OpenKeyReadOnly(Key) then begin Event := CreateEvent(nil, False, False, nil); if Event > 0 then begin while True do begin RegNotifyChangeKeyValue(Reg.CurrentKey, WatchSub, REG_NOTIFY_CHANGE_LAST_SET, Event, True); if WaitForSingleObject(Event, INFINITE) = WAIT_OBJECT_0 then TThread.Synchronize(TThread.CurrentThread, procedure begin Proc end); end; end; end; Reg.Free; end).Start; end;

 

사용방법

// Proc : 명령어 입력

// WatchSub : 하위도 모니터링 할 것인가?

RegistryMonitor(RootKey, Key, Proc, WatchSub);

 

]]>
http://kilho.net/archives/engineering/1643/feed 0
형태소 분석 설치 및 사용(PHP) http://kilho.net/archives/engineering/1633 http://kilho.net/archives/engineering/1633#respond Sun, 25 Jun 2017 19:06:43 +0000 http://kilho.net/?p=1633 설치환경 : Centos7 기본, PHP7


yum install wget curl openssl-devel git -y

yum install gcc-c++ java-1.7.0-openjdk-devel python-devel -y

wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
tar xf Python-3.*
cd Python-3.*
./configure
make # Build
make altinstall

pip3.6 install JPype1-py3
pip3.6 install konlpy

cd ..
wget https://bitbucket.org/eunjeon/mecab-ko/downloads/mecab-0.996-ko-0.9.2.tar.gz
tar zxfv mecab-0.996-ko-0.9.2.tar.gz
cd mecab-0.996-ko-0.9.2
./configure
make
make install

cd ..
wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.1-20150920.tar.gz
tar zxfv mecab-ko-dic-2.0.1-20150920.tar.gz
cd mecab-ko-dic-2.0.1-20150920
./autogen.sh
./configure
make
make install

cd /usr/local/src/
git clone https://github.com/rsky/php-mecab.git
cd /usr/local/src/php-mecab/mecab
phpize
./configure --with-php-config=/usr/bin/php-config --with-mecab=/usr/local/bin/mecab-config
make
make test
make install

cp /usr/local/src/php-mecab/mecab/modules/mecab.so /usr/lib64/php/modules/mecab.so

echo "extension = mecab.so" > /etc/php.d/mecab.ini
systemctl restart httpd.service

PHP 에서는 아래와 같이 사용하면 됩니다.


<?

$mecab = new MeCabTagger();

echo $mecab->parse('안녕하세요? 반갑습니다.');

?>

참고
http://qiita.com/yudaifuijta0121/items/1787d70b9cfca3e43d12
http://eunjeon.blogspot.kr/
https://bitbucket.org/eunjeon/mecab-ko-dic
https://github.com/rsky/php-mecab

]]>
http://kilho.net/archives/engineering/1633/feed 0
Delphi 10.2 Toyko Linux PAServer 설치 및 사용 http://kilho.net/archives/engineering/1630 http://kilho.net/archives/engineering/1630#respond Sun, 25 Jun 2017 19:04:09 +0000 http://kilho.net/?p=1630 델파이가 10.2 으로 업데이트 되었습니다.

CentOS7 에서 사용하기 위해 처음 설치방법입니다.


# yum -y update

# yum install -y firewalld
# systemctl unmask firewalld
# systemctl enable firewalld
# systemctl start firewalld

# firewall-cmd --permanent --add-port=64211/tcp
# firewall-cmd --reload

# yum group install "Development Tools"

# yum install wget curl-devel
# wget https://down.kilho.net/data/LinuxPAServer19.0.tar.gz
# tar xvfz ./LinuxPAServer19.0.tar.gz
# ./PAServer-19.0/paserver

# chmod +x {생성된 파일}
# ./{생성된 파일}

]]>
http://kilho.net/archives/engineering/1630/feed 0
웹(PHP) 해킹, 위험코드 점검 프로그램 http://kilho.net/archives/wordpress/1586 http://kilho.net/archives/wordpress/1586#comments Sun, 25 Jun 2017 18:48:38 +0000 http://kilho.net/?p=1586 서버 해킹을 통해 악성 PHP 가 설치되었는지 모니터링 및 위험성이 있는 코드가 있는지 손쉽게 확인하기 위해 만들었습니다.

  1. 해당 코드를 서버계정에 작성하여 올립니다.
    <?
    /**
    * Name: Kilho's PHP Diagnosis
    * Author: Kilho Oh (prince@kilho.net)
    * Author URI: http://kilho.net/
    */
    class TDiagnosis
    {
    public $dir;public function __construct()
    {
    $this->dir = $_SERVER['DOCUMENT_ROOT'].'/';
    }private function SeekFile($dir, &$files)
    {
    $hnd = opendir($dir);
    while (false !== ($entry = readdir($hnd)))
    {
    if(in_array($entry, array('.', '..'))) continue;if(is_dir($dir.$entry) && !in_array($entry, array('.', '..')))
    {
    $this->SeekFile($dir.$entry.'/', $files);
    }else{
    if(!in_array(substr($entry, strrpos($entry, '.')+1), array('php', 'inc', 'html', 'htm', 'php3'))) continue;$file = $dir.$entry;
    if(!in_array($file, $files)) $files[] = $file;
    }
    }
    closedir($hnd);
    }private function Diagnosis($files)
    {
    $suspicion = array();
    $loop = 0;
    do {
    $file = $files[$loop];
    $loop++;if($file == $_SERVER['SCRIPT_FILENAME']) continue;$data = file_get_contents($file);
    $data = preg_replace('//*(.*?)*//is', '', $data);
    $data = preg_replace('///*(.*)n/', '', $data);if(preg_match('/(^|s|?php3|[?])(eval|system|exec)s*(/i', $data))
    $suspicion[] = $file;
    } while ($loop < count($files));return $suspicion;
    }public function Run()
    {
    $files = array();
    $this->SeekFile($_SERVER['DOCUMENT_ROOT'].'/', $files);
    return $this->Diagnosis($files);
    }
    }/**
    * Main
    */
    $diagnosis = new TDiagnosis;$result['host'] = $_SERVER['HTTP_HOST'];
    $result['suspicion'] = $diagnosis->run();
    
    echo json_encode($result);
    ?>
    
  2. 아래 다운로드 버튼을 클릭하셔서 모니터링 프로그램을 다운받습니다.
  3. 다운받은 프로그램을 실행시킨 후 URL(s) 에 (1)에서 작성한 URL 을 입력합니다.
  4. Diagnose 를 클릭하시면 아래와 같이 의심되는 파일명을 알려줍니다.
  5. 평소에 없던 코드가 생겼을 경우 반드시 해당 파일을 검사하시길 바랍니다.

 

 

다운로드 ]]>
http://kilho.net/archives/wordpress/1586/feed 26
SSHScript – 리눅스(웹호스팅)백업을 편하게 http://kilho.net/archives/engineering/1584 http://kilho.net/archives/engineering/1584#comments Wed, 14 Jun 2017 04:17:26 +0000 http://kilho.net/?p=1584 사용방법

  1. 프로그램을 실행시킵니다.
  2. File 버튼을 클릭 후, 아래와 같이 작업내용을 작성 후 저장합니다.
    (여러 계정인 경우 반복해서 작성하시면 됩니다.)

    # 백업 파일을 만들기 위해 계정에 접속합니다.
    ssh://{아이디}:{패스워드}@{아이피}:{포트}
    # 백업할 파일이 있는 위치로 이동합니다.
    cd {경로}
    # 파일을 묶고 압축합니다. {date} 를 입력하시면 날짜가 입력됩니다.
    tar cvfz {아이디}.{date}.tar.gz .
    # 데이터를 백업받습니다.
    mysqldump -u{아이디} -p{패스워드} {아이디} > {아이디}.{date}.sql
    # 백업 파일을 만드는 작업이 끝나면 반드시 exit 를 입력합니다.
    exit
    
    # 백업파일을 SFTP 를 통해 다운받기 위해 계정에 접속합니다.
    ftp://{아이디}:{패스워드}@{아이피}:{포트}
    # 백업한 파일이 있는 위치로 이동합니다.
    cd {경로}
    # 파일을 다운받습니다.
    get {아이디}.{date}.tar.gz
    get {아이디}.{date}.sql
    # 계정에 있는 백업본을 삭제합니다.
    rm {아이디}.{date}.tar.gz
    rm {아이디}.{date}.sql
    # 작업이 끝났으므로 exit 를 입력합니다.
    exit
    
  3. RUN 버튼을 눌러서 실행합니다.

 

다운로드

 

주절주절

  • 나야나 웹호스팅을 이용하던 1인으로 피해를 당하고 나서,
    백업의 중요성을 느끼며 만들었습니다 ㅠㅠ
]]>
http://kilho.net/archives/engineering/1584/feed 4
랜섬웨어 공격에 서비스 장애가 발생하였습니다. http://kilho.net/archives/notice/1575 http://kilho.net/archives/notice/1575#comments Sat, 10 Jun 2017 17:08:37 +0000 http://kilho.net/?p=1575 6월 10일(토) SBS 8시 뉴스에 보도된 것과 같이 국내 1만여개 웹사이트를 관리하는 IDC 기관이 랜섬웨어 공격을 받아 서비스에 장애가 발생하였습니다.

 

복구가 언제될지 모르는 상황이라, 기존에 백업을 받아둔 것으로 다른 서버 회사로 이전 및 복구 하였습니다.

 

연결이 깨진 페이지가 있을 수 있습니다. 발견하시면 질문게시판에 알려주시면 바로 수정하겠습니다.

 

감사합니다.

 

관련뉴스 : http://news.naver.com/main/read.nhn?mode=LSD&mid=shm&sid1=105&oid=055&aid=0000538425

업체공지 : http://www.nayana.com/bbs/set_view.php?b_name=notice&w_no=957

 

[추가]

(주)인터넷나야나 의 답변을 받은 결과 백업 서버까지 랜섬웨어의 피해를 받아 복구가 불가능해 보입니다.

해당 업체의 백업 프로세서 「로컬 (1일 1회), CDP Backup (1일 2회, 7일 보관) Network (만료 후 삭제 백업) 」 에 희망을 가졌지만, 의미 없는 것 같습니다.

길호넷의 메인 페이지만 해당 업체에서 관리를 받고 있으며, 다른 하위 도메인으로 운영되는 서비스들은 다른 업체를 통해 관리를 받고 있습니다.

3월 이후 가입한 회원 정보 및 워드프레스로 작성된 글들은 삭제되었으며 현재 상황에서는 복구가 불가능해 보입니다.

(* 웹메모에 작성하신 글은 피해가 없습니다.)

]]>
http://kilho.net/archives/notice/1575/feed 6
길호넷이 새로 단장하였습니다 http://kilho.net/archives/notice/1545 http://kilho.net/archives/notice/1545#comments Mon, 27 Feb 2017 21:01:39 +0000 http://kilho.net/?p=1545 길호넷 홈페이지를 새로운 테마로 새 단장 하여 오픈하였습니다.

기존 테마가 로딩 시 부하를 많이 차지하여 가볍고 깔끔한 테마로 바꾸었습니다.

바꾸는 과정에서 적용이 안 된 부분을 발견 시 질문 게시판 에 남겨주시면 확인 후 수정하겠습니다.

많은 관심 바랍니다.

]]>
http://kilho.net/archives/notice/1545/feed 6
PHP로 만든 단순한 CDN 서비스 모듈 http://kilho.net/archives/engineering/1355 http://kilho.net/archives/engineering/1355#respond Mon, 20 Feb 2017 02:53:02 +0000 http://kilho.net/?p=1355 트래픽 부하를 줄이기 위해 CloudFlare 를 사용하였는데 연결위치가 LAX(로스엔젤레스)라 속도가 많이 느려지는것을 확인하고 급하게 CDN 형태로 사용하고자 만들었습니다.

해당 서버는 도쿄(Vultr)에 위치해 있습니다.

원리는 kilho.net/{파일} 을 cdn.kilho.net/{파일} 로 연결하여 메인 호스팅의 트래픽을 분산합니다.


<?
$cfg['url'] = 'kilho.net';
$cfg['cache'] = '../data/cache';

$url = $_SERVER['REQUEST_SCHEME'].'://'.$cfg['url'].$_SERVER['REQUEST_URI'];
$url_arr = parse_url($url);

switch($_SERVER['REQUEST_METHOD'])
{
case 'GET':
$filename = $cfg['cache'].$url_arr['path'];
$dirname = dirname($filename);
if(!is_file($filename))
{
if(!is_dir($dirname)) mkdir($dirname, 0707, true);

$ch = curl_init();
$fp = fopen($filename, 'w');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_SCHEME'].'://'.$cfg['url']);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);
fclose($fp);

switch($code = curl_getinfo($ch, CURLINFO_HTTP_CODE))
{
case 200:
break;

default:
touch($filename, $code);
}
curl_close($ch);
}

if(is_file($filename))
{
$filetime = filemtime($filename);

if($filetime<1000)
{
header('HTTP/1.0 '.$filetime);
} else {
include '_mime.php';
$filetype = get_mime($filename);
$lastmodified = filemtime($filename);
$etag = md5_file($filename);

header('Content-Type: '.$filetype);
header('Expires: '.gmdate('D, d M Y H:i:s', time()+77760000).' GMT');
header('Cache-Control: public, max-age=77760000');
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $lastmodified).' GMT');
header('Etag: '.$etag);
header('Access-Control-Allow-Origin: *');

if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
{
if($_SERVER['HTTP_IF_MODIFIED_SINCE']==gmdate('D, d M Y H:i:s', $lastmodified).' GMT'||$_SERVER['HTTP_IF_NONE_MATCH']==$etag)
{
header('HTTP/1.0 304 Not Modified');
exit;
}
}
}

if(strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))
if(in_array($filetype, array('text/plain', 'text/html', 'text/css', 'text/javascript', 'application/json', 'application/xml')))
ob_start('ob_gzhandler');

$fp = fopen($filename, 'rb');
fpassthru($fp);
fclose ($fp);

exit;
}

break;

case 'POST':

case 'PUT':

case 'DELETE';
break;
}

header('HTTP/1.0 404 File Not Found.');
?>

]]>
http://kilho.net/archives/engineering/1355/feed 0