月度归档:2017年02月

关于暗网购买信用卡的实验

最近有一篇文章《暗网买信用卡纪实:亲测盗刷无门槛》引起了我的注意。由于本身是行业内人士,所以我就照着文章的流程自己实验了一下。

首先需要的是Tor浏览器(官网)。之后,按文章中的方式连接到Tor网络。但是,其实这一步并没有文章中所说的那么轻松,我稍微费了点功夫还是顺利的连接了。大概原理就是使用shadowsocks开本地代理,通过代理连接Tor。

接下来,访问一下文中的Hidden Wiki网站。网站似乎和文中的前端页面显示有点不同,可能是最近改过版吧。

网站是https的,顺手看看证书

网站上确实有很多.onion的域名链接,分成了许多板块。这些链接在非Tor网络即使开VPN也是访问不了的,所以,只能通过Tor浏览器访问。

从链接说明中我们可以看出,网站上的链接大略主要都是些非法的交易的网站,如原文所说,涉及到枪支,洗钱,色情,赌博,非法服务器等。当然,这里我还是主要关心信用卡相关的网站。由于我并没有找到原文中提到的AlphaBay Market,所以我锁定了网站上相关的板块:Marketplace Financial

我全部点开查看,只有途中圈出的网站能够正常访问,其他均打不开。访问速度很快,和正常访问无异。

能打开的网站内容大同小异,都是如上这样的货币兑换站点,即用Bitcoin交易。由于我并没有持有Bitcoin,就暂时不进行下一步的实验了。


2017-02-25更新

在网站中,我找到了之前版本的hidden wiki的链接。

旧版里头Financial Services板块下的网站就大多数能够访问了,而且也终于有了原文中所说的那些信用卡交易网站。典型的网站如下:

我花了一些时间点开了所有的板块下的网站查看。暂时没有发现可以购买到中国发行或者是银联通道的信用卡。这些网站上的信用卡还是以美国为主,也可以买到欧洲的。发行商主要也是VISA,MasterCard,AMEX,支持的货币为USD,AUD,EUR, GBP,而交易方式基本采用Bitcoin换算。

电商型:

论坛型:

另外,经过论坛搜索,我终于找到原文中的AlphaBay Market,这个站点是一个比较全面的销售站点。注册之后能看到完整的站点内容。

商品种类非常完整,我以China Creditcard为关键字,搜到了许多商品,典型的如下:

标题是提供全球各种信用卡的信息和CVV码

描述中,可以看到,提供中国的信用卡。由于页面上并没有给出卖家的联系方式,我这里也暂时无法确认是否确实有中国信用卡的信息。


2017-02-26更新

根据原文提供的信息,我找到了原文中提到的商家

在商品描述中,可以发现,商家可以提供来自中国的信用卡

于是,我向卖家发了一条私信,询问相关情况,等待回复中。

VMware虚拟机安装macOS

前期准备

首先自然需要VMware软件,这里用的是最新的VMware 12。然后还需要准备镜像和补丁。这里提供我的网盘分享链接:

  1. macOS最新版的cdr镜像:macOS 10.12 Sierra
  2. 最新版的Unlocker补丁:unlocker 2.0.8

由于默认的VMware不支持macOS的安装,所以需要额外的安装一个unlocker补丁来解锁这一限制。

安装补丁

要安装unlocker补丁,首先得确保VMware的服务不在运行,所以先在任务管理器中结束掉VMware的相关进程。

然后解压unlocker208.zip压缩包,右键管理员模式运行其中的win-install.cmd。执行完成后cmd窗口将自动关闭。

2.08的unlocker里本身不包含了darwin.iso补丁,在进行打补丁的时候会自动从网络下载最新的darwin.iso并复制到vmware的安装目录,请在此步保持网络畅通。如果下载失败,也可以手动下载:darwin.iso

创建虚拟机

安装完补丁后,启动VMware,创建新的虚拟机,

这里使用之前下载的cdr镜像

操作系统选择macOS 10.12。接下来就是正常的虚拟机安装步骤。配置完成后,不要开启虚拟机,先去修改一个文件,否则将无法顺利安装。

修改虚拟机所在目录下的.vmx文件,加入以下一行:

smc.version = 0

安装macOS

完成以上步骤后,启动虚拟机,开始macOS的安装

熟悉的苹果启动页面

接下来需要使用安装工具中的磁盘工具对之前创建虚拟机时分配的磁盘进行格式化

选择之前创建的磁盘,可以通过大小来找到。我之前创建的时256G的虚拟磁盘,然后点击抹掉。其实就是按照macOS所需要的格式进行格式化:

抹掉后,就可以看见这个磁盘了,选择这个磁盘继续安装。直到安装完成。

安装VMware Tools

安装完成后,虚拟机的分辨率就正常了。大功告成。

Ubuntu16.04配置pptp

首先安装pptpd服务

apt install update
apt install pptpd

编辑以下配置文件,确保其中的各配置项如下配置

  • /etc/pptpd.conf
option /etc/ppp/pptpd-option                    #指定PPP选项文件的位置
debug                                           #启用调试模式
localip 192.168.0.1                             #VPN服务器的虚拟ip
remoteip 192.168.0.200-238,192.168.0.245        #分配给VPN客户端的虚拟ip
  • /etc/ppp/pptpd-options
name pptpd                      #pptpd服务的名称
refuse-pap                      #拒绝pap身份认证模式
refuse-chap                     #拒绝chap身份认证模式
refuse-mschap                   #拒绝mschap身份认证模式
require-mschap-v2               #允许mschap-v2身份认证模式
require-mppe-128                #允许mppe 128位加密身份认证模式
ms-dns 8.8.8.8                  #使用Google DNS
ms-dns 8.8.4.4                  #使用Google DNS
proxyarp                        #arp代理
debug                           #调试模式
dump                            #服务启动时打印出所有配置信息
lock                            #锁定TTY设备
nobsdcomp                       #禁用BSD压缩模式
logfile /var/log/pptpd.log      #输出日志文件位置
  • /etc/ppp/chap-secrets
#格式:用户名   服务类型   密码   分配的ip地址
test    *    12345678    *
#第一个*代表服务可以是PPTPD也可以是L2TPD,第二个*代表随机分配ip

完成以上后,pptpd的配置就完成了,重启生效

service pptpd restart

接下来设置路由规则,首先修改/etc/sysctl.conf,取消下面一行的注释:

net.ipv4.ip_forward=1

使配置生效

sysctl -p

使用iptables创建NAT转发规则

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

使用iptables-persistent持久化规则的方法见此文章:使用iptables-persistent持久化iptables规则

至此,pptp配置完成

Linode新开Tokyo 2区域

之前的日本区域主机由于国内直连速度快,很快就售罄,甚至Linode开启了购买限制,新注册的账号已经无法看到Tokyo区了。直到2016年12月,Linode如约开放了Tokyo2区。不过trace后发现,此次开放的Tokyo2区域使用的是NTT服务商,据传NTT对电信不友好,丢包率较高,网络不稳定。

既然有了,那还是测试一下吧。最近刚用了BBR优化shadowsocks,那就用shadowsocks来试试。我在Tokyo和Fremont分别开了一台机器,环境都是Ubuntu16.04。也都更换内核,启用BBR并安装shadowsocks。接下来访问Youtube观看720p视频。

结果和预期一样,Fremont流畅观看,而Tokyo2卡的无法容忍。查看shadowsocks的日志如下:

Fremont:

Tokyo2:

可以注意到,Fremont的峰值已经超过4M/s,平均也应该有2M/s。对比峰值都不超过2M/s,看来Fremont的速度确实更佳。

在Linode上应用BBR算法

2017-3-13更新


评论中有反馈说直接使用linode提供的4.9.7也能成功开启,但是lsmod命令并不显示加载了tcp_bbr。刚好我也有个朋友做了相关的测试:

我测试了下,lsmod |grep bbr确实没有输出。但是,根据wget测速,BBR应该是生效了的,这是测试结果:

开启BBR:

关闭BBR:

清空/etc/sysctl.conf时的下载速度过慢以至于无法完成下载,只能截屏即时速度。

所以这就很奇怪了,lsmod |grep bbr的输出与否与BBR开启是否有关系?

所以,结论是,使用Linode提供的4.9.7内核可以开启bbr,但是lsmod并不会显示Module。

在网上查了一下,有一种说法是:

Linode自带的内核都是把模块都编译一块的,所以lsmod里看不到正常,lsmod是看额外加载的模块的。

我认为可能答案就是这样了。

以下是原文


在之前的文章使用BBR算法加速shadowsocks中描述了如何在已经配置好内核的机器上启用TCP BBR。但是在实际应用到Linode的VPS时出现了问题,最后一步执行

lsmod |grep bbr

时,并没有找到tcp_bbr服务,也就是说,服务启动失败。寻找原因之后发现,应该是我直接使用了Linode提供的4.9.7内核,而这个内核并不支持BBR。所以,还是需要手动更换内核。

首先,wget最新的Linux内核(Ubuntu 4.9.x Kernel)

wget -O linux-image-4.9.0-amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9/linux-image-4.9.0-040900-generic_4.9.0-040900.201612111631_amd64.deb

安装内核

dpkg -i linux-image-4.9.0-amd64.deb

安装grub2引导

dpkg -i linux-image-4.9.0-amd64.deb

修改grub文件

vim /etc/default/grub

将文件内的字段中与下面不同的进行替换和增加

GRUB_TIMEOUT=10
GRUB_CMDLINE_LINUX="console=ttyS0,19200n8"
GRUB_DISABLE_LINUX_UUID=true
GRUB_SERIAL_COMMAND="serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1"
GRUB_TERMINAL=serial

更新grub

update-grub

显示在最顶端的kernel就是即将启动的kernel。如果没显示在最顶端,就把其余的kernel删掉(一般都在最顶端):

apt-get purge OLD_KERNEL_NAME

然后进入linode的dashboard,点击edit:

选择Grub2引导方式,点击保存

保存后,重启主机。此时查看系统内核,应该已经变成4.9了

root@ubuntu:~# uname -r
4.9.0-040900-generic

此时,再按照前篇文章所说,执行

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

确认bbr已经配置成功后,监测是否运行

root@ubuntu:~# lsmod |grep bbr
tcp_bbr                20480  5

出现以上tcp_bbr服务信息即已成功。

使用BBR算法加速shadowsocks

Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,最新的 4.9 版内核已经已经支持了这个算法。对于这个算法,在知乎问题《Linux Kernel 4.9 中的 BBR 算法与之前的 TCP 拥塞控制相比有什么优势?》中,李博杰博士给出了如下解释:

TCP BBR 致力于解决两个问题:

  1. 在有一定丢包率的网络链路上充分利用带宽。
  2. 降低网络链路上的 buffer 占用率,从而降低延迟。

这些,对于shadowsocks这类的应用来说无疑都是十分需要的。不重复造轮子,github上果然有人已经先行实践了 —— 开启TCP BBR拥塞控制算法

那么,我们就拿来用吧,我的shadowsocks服务器放在Linode上,由于Linode的dashboard可以直接修改kernel版本,BBR算法需要至少4.9以上的内核,那么我们就将VPS的kernel版本调整为最新的4.9.7。修改完成后reboot。

此时查看内核版本:

root@ubuntu:~# uname -r
4.9.7-x86_64-linode80

已经是4.9.7了,然后执行

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

保存生效。

sysctl -p

执行

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

如果结果都有bbr, 则证明你的内核已开启bbr。

这里可以再次reboot,确保更改生效。

执行

lsmod | grep bbr

看到有 tcp_bbr 模块即说明bbr已启动。

使用Docker部署phpMyAdmin

其实直接安装phpMyAdmin已经十分简单,一般来说也并不会有一定要用Docker安装的理由。主要目的还是练手吧。

首先拉取镜像

docker pull phpmyadmin/phpmyadmin

执行镜像

docker run --name phpMyAdmin -d -e PMA_HOST=SERVER_IP -e PMA_PORT=3306 -p 8081:80 phpmyadmin/phpmyadmin

然后访问以下地址就可以了

http://SERVER_IP:8081/

查看运行状态

root@ubuntu:~# docker ps
CONTAINER ID        IMAGE                   COMMAND                CREATED             STATUS              PORTS                  NAMES
ac8bc1c0e023        phpmyadmin/phpmyadmin   "/run.sh phpmyadmin"   15 minutes ago      Up 15 minutes       0.0.0.0:8081->80/tcp   phpMyAdmin

尝试登陆phpMyAdmin,如果显示连接失败错误,常见的原因有两个

  • 未修改bind-address

进入mysql的配置文件,/etc/mysql/目录下有mysqld.cnf,my.cnf等多个配置文件,找到其中的以下字段,注释掉

bind-address = 127.0.0.1

然后重启mysql

  • 未开启root账户远程登陆

进入mysql shell,执行赋权命令

mysql> grant all privileges on *.* to 'root'@'%' identified by 'YOUR_PASSWORD';
mysql> flush privileges;

Ref: https://docs.phpmyadmin.net/en/latest/setup.html#installing-using-docker

WordPress主题额外CSS的实现

观察到最近的版本中,WordPress在主题自定义页面添加了一个功能:额外CSS。之前许多第三方主题自带了这个功能,而WordPress官方是如何实现这个功能的呢。

首先,主题的配置文件只存在于两处:

  • /wp-content/themes/主题目录/
  • 数据库wp_options表

而此类的输入型属性一般都是在数据库中存储,所以我重点关注了下数据库。执行查询:

select option_id, option_name from wp_options where option_name like "%theme%" order by option_id;

果然找到其中一条关于我正在使用的主题twentyfifteen的记录

+-----------+--------------------------------------------------+
| option_id | option_name              |
+-----------+--------------------------------------------------+
|     32154 | theme_mods_twentyfifteen |

下面我们来看看这条记录具体的内容

select * from wp_options where option_id = 32154;

查到结果中的option_value的值如下:

a:6:{s:18:"nav_menu_locations";a:2:{s:7:"primary";i:6;s:6:"social";i:102;}s:16:"background_color";s:6:"efefef";s:12:"color_scheme";s:7:"default";s:17:"sidebar_textcolor";s:7:"#ffffff";s:23:"header_background_color";s:7:"#303030";s:18:"custom_css_post_id";i:1371;}

这是一条序列化了的记录,不过还是注意到了最后有一个custom_css_post_id,这不就是我们的自定义css吗!key名中含有post id,难道是以文章的形式存储的?于是带着这个id的值”1371″,我到文章表wp_posts中查找。

select post_content from wp_posts where ID = 1371;

得到的内容如下:

html, body, div, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, input {
        font-family: Microsoft YaHei, Century Gothic !important;
}

果然,真相大白,新版的WordPress中自定义CSS的配置被以文章形式存储在了数据库中。