If it is known all the eigen values are positive, than a numerical brute force iterative method of the form
$x_{t+1} = (1-c\mathbf{A})x_t$
where $c$ equals $1/\lambda_0$ where $\lambda_0$ is the dominant eigenvalue of $\mathbf{A}$ can be used. Expressing this more generally
$x_{t+n} = (1-c\mathbf{A})^nx_t$
where $n$ represents the $n^{th}$ iteration.
A back of the envelope calculation shows how this works. Consider the eigenvalue decomposition of $\mathbf{A}$,
$\mathbf{A}x_m = \lambda_m x_m$
inserting this equation into the one above results in
$x_{m,t+n} = (1-c \lambda_m)^nx_{m,t}$.
When $x_{m,t}$ is a non zero eigenvector, then the prefactor $(1-c \lambda_m)$ is less than 1 and $q^n$ for q in the range of $-1<q<1$ goes to zero as $n$ approaches infinity. The prefactor $(1-c \lambda_m)$ for the null space, however, evaluates to 1 and does not decrease with iterations. Note that convergence to a single eigen vector is not guaranteed since the null space may be degenerate.
But as was mentioned in the comments, null space packages use SVD under the hood.